Specflow中的动态上下文注入

时间:2014-12-17 16:57:03

标签: specflow

使用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);
    }
}

1 个答案:

答案 0 :(得分:3)

缺点只是您通常使用动态对象获得的缺点。您将无法获得智能感知,并且无法向您的对象添加任何行为。

我个人更喜欢使用特定的类来处理步骤之间的传递状态,因为这些对象可以被分配行为以及保存数据,但是YMMV。

代替通用字典虽然这似乎是合理的,因为它至少可以避免演员。