首先我知道問題是什麼,我只是不瞭解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
我已將視圖嵌入到程序集中。現在通行證測試無處不在。 –