: 내가 봤 때단위 테스트 컨트롤러 - 나는 다음과 같은 컨트롤러에 대한 단위 테스트를 만들려하지만 회원 클래스에서 실패있어 회원 오류
[TestClass] public class AccountControllerTest { [TestMethod] public void LogOnPostTest() { var mockRequest = MockRepository.GenerateMock(); var target = new AccountController_Accessor(); target.Initialize(mockRequest); var model = new LogonModel() { UserName = "test", Password = "1234" }; string returnUrl = string.Empty; ActionResult expected = null; ActionResult actual = target.LogOn(model, returnUrl); if (actual == null) Assert.Fail("should have redirected"); } }
:
public class AccountController:BaseController { public IFormsAuthenticationService FormsService { get; set; } public IMembershipService MembershipService { get; set; } protected override void Initialize(RequestContext requestContext) { if(FormsService == null) { FormsService = new FormsAuthenticationService(); } if(MembershipService == null) { MembershipService = new AccountMembershipService(); } base.Initialize(requestContext); } public ActionResult LogOn() { return View("LogOn"); } [HttpPost] public ActionResult LogOnFromUser(LappLogonModel model, string returnUrl) { if(ModelState.IsValid) { string UserName = Membership.GetUserNameByEmail(model.Email); if(MembershipService.ValidateUser(model.Email, model.Password)) { FormsService.SignIn(UserName, true); var service = new AuthenticateServicePack(); service.Authenticate(model.Email, model.Password); return RedirectToAction("Home"); } } ModelState.AddModelError("", "The user name or password provided is incorrect."); return View("LogOn", model); } }
단위 테스트 코드 다음 코드가 있지만 accountcontroller에 멤버십을 전달하는 방법을 모르겠다.
var httpContext = MockRepository.GenerateMock(); var httpRequest = MockRepository.GenerateMock(); httpContext.Stub(x => x.Request).Return(httpRequest); httpRequest.Stub(x => x.HttpMethod).Return("POST"); //create a mock MembershipProvider & set expectation var membershipProvider = MockRepository.GenerateMock(); membershipProvider.Expect(x => x.ValidateUser(username, password)).Return(false); //create a stub IFormsAuthentication var formsAuth = MockRepository.GenerateStub(); /*But what to do here???{............... ........................................ ........................................}*/ controller.LogOnFromUser(model, returnUrl);
Ple ase이 코드가 작동하도록 도와주세요.
대단히 감사합니다. – developer