为了符合并发性要求,我想知道如何在Godog
的多个步骤之间传递参数或状态。
func FeatureContext(s *godog.Suite) {
// This step is called in background
s.Step(`^I work with "([^"]*)" entities`, iWorkWithEntities)
// This step should know about the type of entity
s.Step(`^I run the "([^"]*)" mutation with the arguments:$`, iRunTheMutationWithTheArguments)
我想到的唯一想法是内联被调用函数:
state := make(map[string]string, 0)
s.Step(`^I work with "([^"]*)" entities`, func(entityName string) error {
return iWorkWithEntities(entityName, state)
})
s.Step(`^I run the "([^"]*)" mutation with the arguments:$`, func(mutationName string, args *messages.PickleStepArgument_PickleTable) error {
return iRunTheMutationWithTheArguments(mutationName, args, state)
})
但这有点像一种解决方法。
Godog
库本身是否具有传递这些信息的功能? 最佳答案
Godog当前没有这样的功能,但是我过去通常所做的(需要测试并发性)是创建一个TestContext结构来存储数据,并在每个场景之前创建一个新的结构。 。
func FeatureContext(s *godog.Suite) {
config := config.NewConfig()
context := NewTestContext(config)
t := &tester{
TestContext: context,
}
s.BeforeScenario(func(interface{}) {
// reset context between scenarios to avoid
// cross contamination of data
context = NewTestContext(config)
})
}
我也有一个旧示例的链接:https://github.com/jaysonesmith/godog-baseline-example