7

MvcContrib テスト ヘルパーを使用して、MVC3 のコントローラー メソッドをテストしようとしています。

コントローラー:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }
}

テスト:

[TestMethod]
public void Index()
{
    // Arrange
    HomeController controller = new HomeController();

    // Act
    ViewResult result = controller.Index() as ViewResult;

    // Assert
    result.AssertViewRendered().ForView("Index");
}

エラー:

テスト メソッド Tests.Web.Controllers.HomeControllerTests.Index が例外をスローしました: MvcContrib.TestHelper.ActionResultAssertionException: 予想される結果は ViewResult 型である必要があります。実際には ViewResult 型です。

何か案は?

4

3 に答える 3

7

MVCContrib.TestHelper は古いバージョンの MVC を使用しています。このサイトには現在 MVC3 バージョンがありますが、この記事を書いている時点で MVC4 はリリースされており、MVC4 用の更新された MVCContrib.TestHelpers はまだ存在しません。

ソースに触れなくても、バインディング リダイレクトでこれを修正できます。これをテスト app.config に配置します。

<runtime>  
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">  
        <dependentAssembly>  
            <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />  
            <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="4.0.0.0" />  
        </dependentAssembly>  
    </assemblyBinding>  
</runtime> 

上記のサンプルは、MVC バージョン 1 ~ 3 で 4 を使用するように要求するすべてのアセンブリを示しています。

于 2012-09-17T18:39:54.330 に答える
3

私の推測では、MVC2 に MVCContrib を使用しており、MVC2 ViewResult を使用しています。一方、MVC3 ViewResult を返しています。

MVC3 に対して MVCContrib をコンパイルしようとしましたか?

于 2010-12-10T14:21:32.753 に答える
1

2012 年に誰かが同じエラーに遭遇した場合、MVC4 と MVC3 に対して動作する MvcContrib で同じ問題が発生しています。

解決策は、MvcContrib のソース コードをダウンロードすることでした。MVCContrib.TestHelper プロジェクトで、System.Web.Mvc への参照を削除し (デフォルトではバージョン 3 を指す)、System.Web.Mvc を追加しますが、バージョン 4.0.0 を参照していることを確認してください。

次に、プロジェクトを再構築し、生成された dll ファイルを pdb で (TestHelper コードにステップインするため) ソリューションにコピーし、その dll への参照を追加します。私のために働いた!

于 2012-09-07T21:39:57.537 に答える