2012-05-05 51 views
6

テストプロジェクトからナンシーモジュールをテストしようとすると、ちょっとした障害が発生します。ナンシーテストプロジェクトがビューを見つけることができません

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

私は私のモジュールは、ビューをレンダリングしようとしたときのビュー例外を見つけることができない取得:私のテストコードはかなり標準に見えます。プロジェクトを正常に実行すると、モジュールはビューを見つけます。これは、モジュールが見つからないというテストプロジェクトから呼び出されたときだけです。

答えて

8

問題はビューがどこにもテストプロジェクトを閉じていないことと、IRootPathProviderが間違った場所を指しているため問題が見つからないということです。これを回避するには、2つの方法は(多かれ少なかれデフォルトのものと同じであるが、初期化時にものを上書きする可能性)ConfigurableBootstrapperを使用して

var bootstrapper = new ConfigurableBootstrapper(with => { 
    with.RootPathProvider<CustomRootPathProvider>(); 
}); 

をカスタムルートパスプロバイダーを使用することを教えていますその後、public class CustomRootPathProvider : IRootPathProviderを実装し、正しい場所にポイントします。

第二の溶液は、常に出力ディレクトリにコピーするために、あなたのビューを設定することです、私は

+1

また、あなたがテストプロジェクトにインストールされ、右のビューエンジンを持っている必要があることに注意してくださいそれはまた、それを解決する必要があると考えています。たとえば、Razorビューエンジンがインストールされていないと、cshtmlビューは検出されません。 – theDmi

+2

IRootPathProviderのこの素晴らしい実装を見てください。http://www.jefclaes.be/2012/06/making-my-first-nancyfx-test-pass.html –

+0

私のビューを「常にコピーする」に設定すると、私は簡単なテストパスを作ることができました。ルートパスプロバイダを実装する必要はありません。ありがとう! – dimiguel

関連する問題