1

私はMVCContribTesthelperを初めて使用し、Rhinoをあざける。

User.Identity.Name、Server.MapPath、およびFormCollectionに依存するコントローラーの単体テストについて支援が必要です。

私はから始めました

var controller = new SubmitController();
var builder = new TestControllerBuilder();
builder.InitializeController(controller);

User.Identity.Nameを設定するためのこの投稿を見つけました

controller.ControllerContext = TestHelper.MockControllerContext(controller).WithAuthenticatedUser("domain\\username");

この時点で、コントローラーでUser.Identityにアクセスできるようになりました。問題は、フォームコレクション変数を設定する方法になりました。設定

builder.Form.Add("testvar","1");

もう動作しません。今、私は経由でアクセスしなければならなかったようでした

controller.HttpContext.Request.Form.Add("testvar","1)

これは機能しているように見えましたが、この時点で、上記のbuilder(TestControllerBuilder)を使用していません。

次に、サーバーをモックする必要があり、さらに問題が発生しました。どうすればビルダーを使い続けることができますが、httpContext、HttpRequest、Serverなどにモックまたはスタブを使用できます。ビルダーにはHttpRequest、Serverなどの期待値を設定するメソッドがあると期待していました。

ありがとう

4

1 に答える 1

5

ControllerContextMVCContrib コンテキストを削除したコントローラーを交換したとき。次のようなことを試してください:

using MvcContrib.TestHelper;
using MvcContrib.TestHelper.Fakes;
using Rhino.Mocks;

...
var builder = new TestControllerBuilder();
builder.Form.Add("testvar", "1"); 
builder.HttpContext.User = new FakePrincipal(new FakeIdentity("UserName"), new string[] { "Role" });
builder.HttpContext.Server.Stub(x => x.MapPath(Arg<string>.Is.Anything)).Return("Value");
builder.InitializeController(controller);
于 2012-10-02T13:45:05.430 に答える