2010-12-05 7 views
2

James Broome's tutorialに従ってMSpecと関連するインフラストラクチャの一部を教えてくれました。私は最新バージョンのMSpec、MSpecMvc、およびASP.NET MVC 2を使用しています.JP Boodhooのライブラリは使用していません。なぜこのViewResultはMSpecMVCのShouldBeAViewアサーションに失敗しますか?

私はこのテスト

[Subject(typeof(HomeController))] 
public class when_the_home_controller_is_told_to_display_the_default_view 
{ 
    static string key; 
    static string message; 
    static ActionResult result; 
    static HomeController home_controller; 

    Establish context =() => 
    { 
     key = "Message"; 
     message = "Welcome to ASP.NET MVC!"; 
     home_controller = new HomeController(); 
    }; 

    Because of =() => result = home_controller.Index(); 

    It should_return_the_home_view =() => result.ShouldBeAView().And().ViewName.ShouldBeEmpty(); 
} 

を実行すると、私は次のエラー

はホームビューを返す必要があり得る:
がタイプSystem.Web.Mvc.ViewResultである必要があります失敗しましたが、です型System.Web.Mvc.ViewResult

私はコードをステップ実行すると、このメソッドのアサーションに入ります

public static ViewResultAnd ShouldBeAView(this ActionResult actionResult) 
{ 
    actionResult.ShouldBeOfType<ViewResult>(); 
    return new ViewResultAnd(actionResult as ViewResult); 
} 

(MSpecMVCのActionResultExtensions.csファイルに)、けれども私はactionResultがタイプSystem.Web.Mvc.ViewResultであることを確認することができます。私は他のコンピュータで同じツールを使って他のテストを実行しましたが、私は現在の問題に遭遇していません。

答えて

3

James BroomeのMSpec.MVC拡張は、Mspec v0.2を使用しています。 Mspec v0.3を使用しているので、不一致があります。ソースを取得し、MSpec v0.3を使用するようにソリューションを更新する必要があります。

Mspec.MVC拡張がASP.NET MVCソリューションと同じ.NET Framworkバージョンをターゲットにすることを確認します(たとえば、両方とも4.0です)。これは、使用しているMSpecのバージョンによっても異なります。 MSpec v0.3は.NET 3.5.NET 4.0

+0

の両方に対してコンパイルされています。私は確かJamesのソースコードを入手して、MSpecの最新バージョン、つまり0.3に置き換えました。私は4.0に対してコンパイルしています。あなたのご意見ありがとうございます。 – DavidS

+0

問題ありません。 Lemmeはそれがどのように機能するか知っています! :) –

+0

ヘイ・セルギ、私がやったことは、あなたが言ったことに従っていた。私は.NET Frameworkの適切なバージョンに対してコンパイルしていることを確認しましたが、今回はうまくいきました。 :) – DavidS

関連する問題