Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 南希测试项目可以';我找不到风景_C#_Unit Testing_Nancy - Fatal编程技术网

C# 南希测试项目可以';我找不到风景

C# 南希测试项目可以';我找不到风景,c#,unit-testing,nancy,C#,Unit Testing,Nancy,在尝试从测试项目中测试模块时遇到了一些绊脚石。我的测试代码看起来非常标准: [TestMethod] public void Should_return_status_ok_when_route_exists() { // Given var bootstrapper = new DefaultNancyBootstrapper(); var browser = new Browser(bootstrapper); // When var result

在尝试从测试项目中测试模块时遇到了一些绊脚石。我的测试代码看起来非常标准:

[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);
}

当我的模块尝试渲染视图时,出现“找不到视图”异常。如果我正常运行项目,模块会找到视图。只有在从测试项目调用时,模块才会找不到它。

问题在于,视图没有靠近测试项目,而且由于IRootPathProvider指向错误的位置,因此无法找到它们。解决这个问题的两种方法是使用ConfigurableBootstrapper(它与默认的差不多,但在初始化时可以覆盖内容),并告诉它使用自定义根路径提供程序

var bootstrapper = new ConfigurableBootstrapper(with => {
    with.RootPathProvider<CustomRootPathProvider>();
});
var bootstrapper=新的ConfigurableBootstrapper(带=>{
使用.RootPathProvider();
});
然后实现
公共类CustomRootPathProvider:IRootPathProvider
,并将其指向正确的位置


第二种解决方案是将视图设置为始终复制到输出目录,我认为这也可以解决此问题。

请注意,您需要在测试项目中安装正确的视图引擎。例如,如果没有安装Razor视图引擎,将无法找到cshtml视图。另外,请看一下IRootPathProvider的这个漂亮实现:通过将我的视图设置为“始终复制”,我可以通过简单的测试。甚至不需要实现根路径提供程序。谢谢