ASP.Net MVC2プロジェクトを実行していて、そのプロジェクトでいくつかの単体テストを実行したいと思います。LogOnControllerをテストしようとしましたが、いくつかの問題に直面しました。LogOnControllerで、AccountMembershipServiceを次のように使用しました。
AccountMembershipService MembershipService = new AccountMembershipService();
if (MembershipService.ValidateUser(model.UserName, model.Password)){
............
..........
}
MOQフレームワークを使用していますが、AccountMembershipServiceをモックする方法を知りたいです。正しいユーザー名とパスワードを指定しましたが、" MembershipService.ValidateUser(model.UserName, model.Password)
"は常にfalseを返します。だからあなたの誰もがこれを行う方法についての考えを持っています。
ちなみに私はプロパティインジェクションを試しました。しかし、いつも次のエラーが発生しました。
"非仮想(VBでオーバーライド可能)メンバーの無効なセットアップ:x => x.ValidateUser(.validUserName、.validPassword)"。
それは、" stubService.Setup(x => x.ValidateUser(model.UserName, model.Password)).Returns(true);
"行から来ます。
これが私のコードです。
[TestMethod]
public void TestLogOn_ValidUserNameAndPassword()
{
var controller = new LogOnController();
var request = new Mock<HttpRequestBase>(MockBehavior.Loose);
var model = new LogOnModel();
var context = new Mock<HttpContextBase>(MockBehavior.Loose);
var stubService = new Mock<AccountMembershipService>();
model.UserName = "xxxxx";
model.Password = "123";
context.SetupGet(x => x.Request).Returns(request.Object);
controller.ControllerContext = new ControllerContext(context.Object, new RouteData(), controller);
stubService.Setup(x => x.ValidateUser(validUserName, validPassword)).Returns(true);
Assert.IsTrue(stubService.Object.ValidateUser(model.UserName, model.Password));
}