使用Specflow的基本依赖注入,可以注入动态上下文对象,如下所示。
这节省了必须使用我觉得笨重的字典,这种方法有缺点吗?
public class TestClass
{
private readonly dynamic context;
public TestClass(ExpandoObject context)
{
this.context = context;
}
[Given(@"I have a file")]
public void GivenIHaveAFile()
{
context.FilePath = @".\Folder\File";
}
[When(@"I use the file")]
public void GivenIHaveAFile()
{
var fileContents = File.ReadAllText(context.FilePath);
}
}
答案 0 :(得分:3)
缺点只是您通常使用动态对象获得的缺点。您将无法获得智能感知,并且无法向您的对象添加任何行为。
我个人更喜欢使用特定的类来处理步骤之间的传递状态,因为这些对象可以被分配行为以及保存数据,但是YMMV。
代替通用字典虽然这似乎是合理的,因为它至少可以避免演员。