# language: ru Функционал: AST-редактир go-файлов Сгенерированные функции автоматически добавляются в тест-файл текущего пакета Сценарий: Добавление шага Дано Файл "init_test.go": ``` package mypkg func InitializeScenario(ctx *godog.ScenarioContext) { ctx.Before(func(ctx context.Context, sc *godog.Scenario) (context.Context, error) { beforeScenario() return ctx, nil }) ctx.After(func(ctx context.Context, sc *godog.Scenario, err error) (context.Context, error) { afterScenario() return ctx, nil }) InitializeGomegaForGodog(ctx) } ``` Дано Файл "mypkg_test.go": ``` package mypkg ``` Когда Добавляется шаг: "^Привет Мир!$" с функцией "ПриветМир" с "" То Файл "init_test.go" должен содержать: ``` package mypkg func InitializeScenario(ctx *godog.ScenarioContext) { ctx.Step(`^Привет Мир!$`, ПриветМир) ctx.Before(func(ctx context.Context, sc *godog.Scenario) (context.Context, error) { beforeScenario() return ctx, nil }) ctx.After(func(ctx context.Context, sc *godog.Scenario, err error) (context.Context, error) { afterScenario() return ctx, nil }) InitializeGomegaForGodog(ctx) } ``` То Файл "mypkg_test.go" должен содержать: ``` package mypkg func ПриветМир() { } ``` Сценарий: Добавление шага с параметрами: int Дано Файл "init_test.go": ``` package mypkg func InitializeScenario(ctx *godog.ScenarioContext) { ctx.Before(func(ctx context.Context, sc *godog.Scenario) (context.Context, error) { beforeScenario() return ctx, nil }) ctx.After(func(ctx context.Context, sc *godog.Scenario, err error) (context.Context, error) { afterScenario() return ctx, nil }) InitializeGomegaForGodog(ctx) } ``` Дано Файл "mypkg_test.go": ``` package mypkg ``` Когда Добавляется шаг: "^Привет Мир!$" с функцией "ПриветМир" с "arg1 int" То Файл "mypkg_test.go" должен содержать: ``` package mypkg func ПриветМир(arg1 int) { } ``` Сценарий: Добавление шага с параметрами: int, string Дано Файл "init_test.go": ``` package mypkg func InitializeScenario(ctx *godog.ScenarioContext) { ctx.Before(func(ctx context.Context, sc *godog.Scenario) (context.Context, error) { beforeScenario() return ctx, nil }) ctx.After(func(ctx context.Context, sc *godog.Scenario, err error) (context.Context, error) { afterScenario() return ctx, nil }) InitializeGomegaForGodog(ctx) } ``` Дано Файл "mypkg_test.go": ``` package mypkg ``` Когда Добавляется шаг: "^Привет Мир!$" с функцией "ПриветМир" с "arg1 int, arg2 string" То Файл "mypkg_test.go" должен содержать: ``` package mypkg func ПриветМир(arg1 int, arg2 string) { } ``` Сценарий: Добавление шага с параметрами: string, int Дано Файл "init_test.go": ``` package mypkg func InitializeScenario(ctx *godog.ScenarioContext) { ctx.Before(func(ctx context.Context, sc *godog.Scenario) (context.Context, error) { beforeScenario() return ctx, nil }) ctx.After(func(ctx context.Context, sc *godog.Scenario, err error) (context.Context, error) { afterScenario() return ctx, nil }) InitializeGomegaForGodog(ctx) } ``` Дано Файл "mypkg_test.go": ``` package mypkg ``` Когда Добавляется шаг: "^Привет Мир!$" с функцией "ПриветМир" с "arg1 string, arg2 int" То Файл "mypkg_test.go" должен содержать: ``` package mypkg func ПриветМир(arg1 string, arg2 int) { } ``` Сценарий: Добавление шага к существующему Дано Файл "init_test.go": ``` package mypkg func InitializeScenario(ctx *godog.ScenarioContext) { ctx.Step(`сделать чтото`, СделатьЧтото) ctx.Before(func(ctx context.Context, sc *godog.Scenario) (context.Context, error) { beforeScenario() return ctx, nil }) ctx.After(func(ctx context.Context, sc *godog.Scenario, err error) (context.Context, error) { afterScenario() return ctx, nil }) InitializeGomegaForGodog(ctx) } ``` Дано Файл "mypkg_test.go": ``` package mypkg func СделатьЧтото(arg1 string, arg2 int) { a := 1 } ``` Когда Добавляется шаг: "^Привет Мир!$" с функцией "ПриветМир" с "arg1 int" То Файл "init_test.go" должен содержать: ``` package mypkg func InitializeScenario(ctx *godog.ScenarioContext) { ctx.Step(`сделать чтото`, СделатьЧтото) ctx.Step(`^Привет Мир!$`, ПриветМир) ctx.Before(func(ctx context.Context, sc *godog.Scenario) (context.Context, error) { beforeScenario() return ctx, nil }) ctx.After(func(ctx context.Context, sc *godog.Scenario, err error) (context.Context, error) { afterScenario() return ctx, nil }) InitializeGomegaForGodog(ctx) } ``` То Файл "mypkg_test.go" должен содержать: ``` package mypkg func СделатьЧтото(arg1 string, arg2 int) { a := 1 } func ПриветМир(arg1 int) { } ``` Сценарий: Не добавляет если шаг с такой функцией уже есть Дано Файл "init_test.go": ``` package mypkg func InitializeScenario(ctx *godog.ScenarioContext) { ctx.Step(`^Привет Мир!$`, ПриветМир) ctx.Before(func(ctx context.Context, sc *godog.Scenario) (context.Context, error) { beforeScenario() return ctx, nil }) ctx.After(func(ctx context.Context, sc *godog.Scenario, err error) (context.Context, error) { afterScenario() return ctx, nil }) InitializeGomegaForGodog(ctx) } ``` Дано Файл "mypkg_test.go": ``` package mypkg func ПриветМир(arg1 string, arg2 int) { a := 1 } ``` Когда Добавляется шаг: "^Привет Мир!$" с функцией "ПриветМир" с "arg1 int" Когда Добавляется шаг: "^Привет Мир!$" с функцией "ПриветМир" с "arg1 int" То Файл "init_test.go" должен содержать: ``` package mypkg func InitializeScenario(ctx *godog.ScenarioContext) { ctx.Step(`^Привет Мир!$`, ПриветМир) ctx.Before(func(ctx context.Context, sc *godog.Scenario) (context.Context, error) { beforeScenario() return ctx, nil }) ctx.After(func(ctx context.Context, sc *godog.Scenario, err error) (context.Context, error) { afterScenario() return ctx, nil }) InitializeGomegaForGodog(ctx) } ``` То Файл "mypkg_test.go" должен содержать: ``` package mypkg func ПриветМир(arg1 string, arg2 int) { a := 1 } ``` Сценарий: Второй раз - не добавляет Дано Файл "init_test.go": ``` package mypkg func InitializeScenario(ctx *godog.ScenarioContext) { ctx.Before(func(ctx context.Context, sc *godog.Scenario) (context.Context, error) { beforeScenario() return ctx, nil }) ctx.After(func(ctx context.Context, sc *godog.Scenario, err error) (context.Context, error) { afterScenario() return ctx, nil }) InitializeGomegaForGodog(ctx) } ``` Дано Файл "mypkg_test.go": ``` package mypkg ``` Когда Добавляется шаг: "^Привет Мир!$" с функцией "ПриветМир" с "arg1 int" Когда Добавляется шаг: "^Привет Мир!$" с функцией "ПриветМир" с "arg1 int" То Файл "init_test.go" должен содержать: ``` package mypkg func InitializeScenario(ctx *godog.ScenarioContext) { ctx.Step(`^Привет Мир!$`, ПриветМир) ctx.Before(func(ctx context.Context, sc *godog.Scenario) (context.Context, error) { beforeScenario() return ctx, nil }) ctx.After(func(ctx context.Context, sc *godog.Scenario, err error) (context.Context, error) { afterScenario() return ctx, nil }) InitializeGomegaForGodog(ctx) } ``` То Файл "mypkg_test.go" должен содержать: ``` package mypkg func ПриветМир(arg1 int) { } ``` Сценарий: Добавление шага с параметрами строкой Дано Файл "init_test.go": ``` package mypkg func InitializeScenario(ctx *godog.ScenarioContext) { ctx.Before(func(ctx context.Context, sc *godog.Scenario) (context.Context, error) { beforeScenario() return ctx, nil }) ctx.After(func(ctx context.Context, sc *godog.Scenario, err error) (context.Context, error) { afterScenario() return ctx, nil }) InitializeGomegaForGodog(ctx) } ``` Дано Файл "mypkg_test.go": ``` package mypkg ``` Когда Добавляется шаг: "^Привет Мир!$" с функцией "ПриветМир" с "a int, s string, content *godog.DocString" То Файл "mypkg_test.go" должен содержать: ``` package mypkg func ПриветМир(a int, s string, content *godog.DocString) { } ``` Сценарий: Добавление шага с параметрами строкой с объединением по типу Дано Файл "init_test.go": ``` package mypkg func InitializeScenario(ctx *godog.ScenarioContext) { ctx.Before(func(ctx context.Context, sc *godog.Scenario) (context.Context, error) { beforeScenario() return ctx, nil }) ctx.After(func(ctx context.Context, sc *godog.Scenario, err error) (context.Context, error) { afterScenario() return ctx, nil }) InitializeGomegaForGodog(ctx) } ``` Дано Файл "mypkg_test.go": ``` package mypkg ``` Когда Добавляется шаг: "^Привет Мир!$" с функцией "ПриветМир" с "a, b, c int" То Файл "mypkg_test.go" должен содержать: ``` package mypkg func ПриветМир(a, b, c int) { } ``` Сценарий: Добавление шага с параметрами строкой с объединением по типам Дано Файл "init_test.go": ``` package mypkg func InitializeScenario(ctx *godog.ScenarioContext) { ctx.Before(func(ctx context.Context, sc *godog.Scenario) (context.Context, error) { beforeScenario() return ctx, nil }) ctx.After(func(ctx context.Context, sc *godog.Scenario, err error) (context.Context, error) { afterScenario() return ctx, nil }) InitializeGomegaForGodog(ctx) } ``` Дано Файл "mypkg_test.go": ``` package mypkg ``` Когда Добавляется шаг: "^Привет Мир!$" с функцией "ПриветМир" с "a, b int, s1, s2 string" То Файл "mypkg_test.go" должен содержать: ``` package mypkg func ПриветМир(a, b int, s1, s2 string) { } ```