0

ユーザー情報を含むビューモデルを返すメソッドは次のとおりです。

    public ActionResult EditUserInfo(string userName)
    {
        try
        {
            var user = Membership.GetUser(userName);
            var model = new UserEditorViewModel
                            {
                                UserName = userName,
                                EmailAddress = user.Email
                            };
            return View(model);
        }
        catch
        {
            return View("Error");
        }
    }

Molesフレームワークを使用してユニットテストするにはどうすればよいですか?方法はありますが、MMembership.CreateUserStringString()それを実装してユーザーIDを偽造する方法がわかりませんでした。

4

1 に答える 1

0

わかりましたので、解決策を見つけました。System.Web.ApplicationServicesをモックできるようにするには、モルアセンブリを追加する必要がありましたMembershipUser。最終的なテスト方法は次のようになります。

    [TestMethod, HostType("Moles")]
    public void EditUserInfoTest()
    {  
        var testUserName = "TestUser";
        var controller = new UserEditorController();
        using (MolesContext.Create())
        {
            var user = new MMembershipUser
            {
                UserNameGet = () => "TestUser",
                EmailGet = () => "test@test.test"
            };        
            MMembership.GetUserString = (userName) =>
            {
                Assert.AreEqual(testUserName, userName);
                return user;
            };
            var result = (ViewResult)controller.Edit(testUserName);                
            Assert.AreNotEqual("Error", result.ViewName);
        }
    }
于 2012-07-16T22:20:56.187 に答える