1

コントローラーのメソッドの単体テストを行っています。次のメソッドでは、戻り値の型がViewResult

    [HttpGet]
    public ActionResult AddRepresentative(Guid businessUnitId)
    {
        var roles = Roles.GetAllRoles();
        var model = new AddRepresentativeModel
        {
            BusinessUnitId = businessUnitId,
            Roles = roles.Select(r => new SelectListItem
            {
                Value = r,
                Text = r,
            })
        };
        return View(model);
    }

これは私がテストのために行ったことです

   [TestMethod]
    public void AddRepresentative_Get_Action_RendersView()
    {
        var result = _controller.AddRepresentative(Guid.Empty);

        Assert.IsInstanceOfType(result,typeof(ViewResult));
    }

エラー:

テスト メソッド AdminPortal.Tests.Controller_Test.Customer.BusinessUnitControllerTests.AddRepresentative_Get_Action_RendersView が例外をスローしました: System.Configuration.Provider.ProviderException: ロール マネージャー機能が有効になっていません。

質問: HttpGet メソッドでロールのリストを収集するのは良い習慣ではありませんか?

テストに合格するために、コントローラーまたはテスト メソッドに変更を加える必要がありますか?

RhinoMock を使用しているため、エラーが発生していますか?

4

1 に答える 1

5

HttpGet メソッドでロールのリストを収集するのは良い習慣ではありませんか?

何も問題はありません。

テストに合格するために、コントローラーまたはテスト メソッドに変更を加える必要がありますか?

はい、app.config ファイルを単体テスト プロジェクトに追加し<system.web>、実際のアプリケーションで行ったのと同じ方法で、セクションにロール マネージャーを登録できます。そうでなければ、Roles.GetAllRoles();メソッドはどこからデータを取得すると思いますか? または、単体テストでモックできるサービス層でこの呼び出しをラップすることもできます。

RhinoMock を使用しているため、エラーが発生していますか?

いいえ。

于 2013-08-15T11:47:52.647 に答える