在這裏,在控制器asp.net的MVC單元測試模擬問題
var roles = Roles.GetAllRoles();
從單元測試呼叫 失敗,並在
LogOnTest()(Error message is "The Role Manager feature has not been enabled.")
你能告訴我,我的測試功能是否正確還是需要更多的邏輯/功能測試?
[TestMethod]
public void LogOnTest()
{
var target = new AccountController();
var membershipMock = MockRepository.GenerateMock<AccountMembershipService>();
var formsMock = MockRepository.GenerateMock<IFormsAuthenticationService>();
target.FormsService = formsMock;
target.MembershipService = membershipMock;
var model = new LogonModel() { USERNAME= "aa", Password = "aa"};
string returnUrl = null;
bool isLoginSuccess = true;
var actual = target.LogOnFromUser(model);
if (actual == null)
Assert.Fail("should have redirected");
}
控制器:
public ActionResult LogOn(LogonModel model)
{
if(MembershipService.ValidateUser(model.UsernName, model.Password))
{
FormsService.SignIn(model.UsernName, true);
var roles = Roles.GetAllRoles(); //Roles got failed here
return RedirectToAction("Index", "Event");
}
else
{
ModelState.AddModelError("", "The user name or password provided is incorrect.");
return View("LogOn", model);
}
如果你找到一個答案是有用的,你應該爲它投票(點擊向上箭頭答案的左上角),如果它回答你的問題,你也應該通過點擊刻度接受它作爲一個答案也在答案的左上角 –