首先我知道问题是什么,我只是不了解Nancy,知道如何解决问题。如何显式指定Nancy视图的位置?
作为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
是在浏览文件夹。
如果我替换上面:
Get["/"] = _ => "Hello World!;
然后测试走向绿色。
所以很明显,问题是,当在NCrunch和appharbor中运行测试时,无法找到home.sshtml
文件。
我该如何明确地告诉南希文件在哪里?
PS视图文件正被复制到输出目录。
PPS我也尝试明确告诉南希哪里的意见是像,这也不管用。
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中的mod,所以我确信有一些简单的事情发生。通过https://jabbr.net/#/rooms/nancyfx弹出 – Jon
我已将视图嵌入到程序集中。现在通行证测试无处不在。 –