【发布时间】:2014-01-16 01:00:34
【问题描述】:
首先我知道问题出在哪里,我只是不太了解南希,不知道如何解决它。
作为 appharbor 构建过程的一部分,我的单元测试失败了。当 NCrunch 执行相同的测试时,它也会失败。但是,当由 VS2012 执行时,它工作正常。
测试看起来像这样:
[Test]
public void Get_Root_Should_Return_Status_OK()
{
// Given
var browser = new Browser(new Bootstrapper());
// When
var result = browser.Get("/");
// Then
Assert.AreEqual(HttpStatusCode.OK, result.StatusCode);
}
处理"/" 路由的HomeModule 部分如下所示:
Get["/"] = _ => View["home.sshtml"];
home.sshtml 位于 Views 文件夹中。
如果我将上面的内容替换为:
Get["/"] = _ => "Hello World!;
然后测试变为绿色。
很明显,问题是在 NCrunch 和 appharbor 中运行测试时,找不到 home.sshtml 文件。
我如何明确告诉南希文件在哪里?
PS 正在将视图文件复制到输出目录。
PPS 我也尝试过明确告诉 Nancy 视图的位置,但这也不起作用。
protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines)
{
var directoryInfo = new FileInfo(Assembly.GetExecutingAssembly().Location).Directory;
if (directoryInfo != null)
Environment.CurrentDirectory = directoryInfo.FullName;
Conventions.ViewLocationConventions.Add((viewName, model, viewLocationContext) => String.Concat("Views/", viewName));
}
【问题讨论】:
-
我假设 Bootstrapper 是您主项目中的引导程序?里面有什么东西可以破坏它吗?您是使用 sshtml 文件作为嵌入式资源还是正常使用?您不应该需要 ApplicationStartup 中的 mods,所以我确信发生了一些简单的事情。流行于jabbr.net/#/rooms/nancyfx
-
我已将视图嵌入到程序集中作为解决方法。通过现在到处测试。
标签: unit-testing nunit appharbor nancy