5

私は次の単体テストを持っています:

    [TestMethod]
    public void Add_Returns_Edit_View()
    {
        // Act
        ActionResult result = _controller.Add();

        // Verify
        result.AssertViewRendered().ForView("Edit");
    }

追加アクションは編集ビューを返すため、これは合格であるはずです。ただし、このアサーションは次の例外で失敗します

MvcContrib.TestHelper.ActionResultAssertionException: Expected view name 'Edit', actual was '~/Views/JobSearch/Edit.cshtml'

ビュー名がフルパス名として返されるのはなぜですか?これは私のT4MVCの使用によるものでしょうか?もしそうなら、どうすればこれを通過させることができますか?


編集追加ビューは次のようになります。

    public virtual ActionResult Add()
    {
        return View(MVC.JobSearch.Views.Edit, new JobSearch());
    }
4

2 に答える 2

3

次のようにT4MVC値に対してテストできます。

result.AssertViewRendered().ForView(MVC.JobSearch.Views.Edit);

私はそれがよりクリーンな解決策だと思います...もしあなたが私に知らせたほうがいいなら:)

于 2011-04-05T01:15:22.090 に答える
1

わかりました、T4MVC コードを調査して、何が起こっているのかを詳しく調べていなかったと思います。MVC.JobSearch.Views.Editは と等しいよう"~/Views/JobSearch/Edit.cshtml"で、メソッド呼び出し.ForView()で説明されているのとまったく同じビュー名に対してテストしています。View()

助けてくれてありがとう。

于 2011-04-05T00:58:16.443 に答える