【发布时间】:2019-04-26 09:57:41
【问题描述】:
使用 SpecFlow,我想使用 Context Injection 在绑定之间共享数据,但是当某些实例无法解析时,我不知道如何避免“BoDi.ObjectContainerException: 'Primitive types or structs cannot be resolved”异常。
我一直在使用 ScenarioContext 和 FeatureContext 在绑定之间共享数据,但在 SpecFlow 3 中这些方法已过时(显示以下警告消息“ScenarioContext.Current is obsolete: Please get the ScenarioContext via Context Injection”)。所以,我开始使用上下文注入。
我正在向容器中添加一个对象实例:
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 的步骤?
【问题讨论】: