# 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" Когда Добавляется шаг: "^Привет Мир!$" с функцией "ПриветМир" Когда Добавляется шаг: "^Привет Мир!$" с функцией "ПриветМир" То Файл "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" Когда Добавляется шаг: "^Привет Мир!$" с функцией "ПриветМир" Когда Добавляется шаг: "^Привет Мир!$" с функцией "ПриветМир" То Файл "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) { } ```