使用SpecFlow,我想使用上下文注入在绑定之间共享数据,但是当某些实例无法解析时,我不知道如何避免出现“ BoDi.ObjectContainerException:'无法解析原始类型或结构”异常。
我一直在使用ScenarioContext和FeatureContext在绑定之间共享数据,但是对于SpecFlow 3,这些方法已过时(以下警告消息显示为“ ScenarioContext.Current已过时:请通过Context Injection获得ScenarioContext”)。因此,我开始使用上下文注入。
我正在将对象实例添加到容器中
private readonly IObjectContainer myInstance;
public CommonSteps(IObjectContainer myInstance)
{
this.myInstance = myInstance;
}
[When(@"I click on the dropdown")]
public void WhenIClickOnTheDropdown(string dropdown)
{
MyClass myElement = ...
myInstance.RegisterInstanceAs(myElement);
}
然后在另一个绑定类中,我得到了该实例:
private readonly MyClass myInstance;
public MetadataConfigurationSteps(MyClass myInstance)
{
this.myInstance = myInstance;
}
问题是我不需要此绑定类的每个步骤中的myInstance。我有未初始化myInstance的测试,因为不需要它,因此我将收到“ BoDi.ObjectContainerException:'无法解析原始类型或结构”异常。
那么,如何避免这种异常?我是否总是需要将myInstance添加到容器中,即使以后也不需要它?还是应该重构我的MetadataConfigurationSteps类,以便仅包含使用myInstance的步骤?
答案 0 :(得分:0)
如果没有在每个步骤中使用对象,则将对象添加到容器中没有任何问题。只需让自己保持简单,然后将其添加到[BeforeScenario]
钩子中即可。