【发布时间】:2011-12-29 17:03:54
【问题描述】:
当我尝试测试 Nancy 模块时,我得到以下信息:
StructureMap 异常代码:205 缺少请求的实例属性 InstanceKey“Nancy.Testing.Fakes.FakeNancyModule”的“modulePath”
这是我的测试:
public class when_a_user_logs_in_successfully
{
static Browser _browser;
static BrowserResponse _response;
Establish context = () =>
{
var bootstrapper = new BlurtsBootsrapper();
_browser = new Browser(bootstrapper); //throws exception here
};
Because of = () => _response = _browser.Get("/Login", with => with.HttpRequest());
It should_return_a_successful_response = () => _response.Body.ShouldNotBeNull();
}
这是我的 BlurtsBootstrapper:
public class BlurtsBootsrapper : StructureMapNancyBootstrapper
{
protected override void ApplicationStartup(StructureMap.IContainer container, Nancy.Bootstrapper.IPipelines pipelines)
{
base.ApplicationStartup(container, pipelines);
container.Configure(x => x.AddRegistry<BlurtsRegistry>());
}
}
【问题讨论】:
-
您能否提供更多有关堆栈跟踪的信息?另外,您是否在 BlurtsRegistry 中进行了更多注册?谢谢
-
我最终能够重现它。似乎它正在尝试使用它最贪婪的构造函数创建 FakeNancyModule 的实例,并且由于它的类型是 string ,因此它在容器中没有解析的价值。将研究我们的解决方案
-
我现在有什么办法可以解决吗?
-
我尝试在基础 ctor 中为该模块提供一个 modulePath,但这没有用。
-
您现在可以使用可配置的引导程序作为解决方法。它基于 TinyIoC,但无论如何它都可以让您测试您的路线。