尝试从测试项目中测试Nancy模块时,遇到了一些绊脚石。我的测试代码看起来非常标准:
[TestMethod]
public void Should_return_status_ok_when_route_exists()
{
// Given
var bootstrapper = new DefaultNancyBootstrapper();
var browser = new Browser(bootstrapper);
// When
var result = browser.Get("/", with =>
{
with.HttpRequest();
});
// Then
Assert.AreEqual(result.StatusCode, HttpStatusCode.OK);
}
当我的模块尝试渲染视图时,我无法找到视图异常。如果我正常运行项目,模块会找到视图。只有在从测试项目中调用时,模块才能找到它。
答案 0 :(得分:8)
问题是视图不会在您的测试项目附近,并且由于IRootPathProvider指向错误的位置,因此无法找到它们。解决这个问题的两种方法是使用ConfigurableBootstrapper(它与默认值相同,但可以在初始化时覆盖内容)并告诉它使用自定义根路径提供程序
var bootstrapper = new ConfigurableBootstrapper(with => {
with.RootPathProvider<CustomRootPathProvider>();
});
然后,您将实施public class CustomRootPathProvider : IRootPathProvider
并将其指向正确的位置。
第二个解决方案是将视图设置为始终复制到输出目录,我相信也应该解决它