저는 ASP.Net MVC2 프로젝트를하고 있고 그것에 대한 단위 테스트를하고 싶습니다. 내 LogOnController 테스트를 시도하고 몇 가지 어려움을 겪었습니다. 내 LogOnController에서 내가 MOQ의 framwork를 사용하고ASP.Net AccountMembershipService moq
AccountMembershipService MembershipService = new AccountMembershipService();
if (MembershipService.ValidateUser(model.UserName, model.Password)){
............
..........
}
으로 나는 AccountMembershipService을 사용하고 난 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));
}
안녕하세요 ... 도와 주셔서 감사합니다. 생성자 주입에 대한 아이디어를 얻지 못했습니다. 그런데 전후에 프로퍼티 인젝션을 시도해 봤지만 .. 항상 다음과 같은 에러가 발생했습니다 .. "비 VB에서 오버라이드 가능한 멤버에 대한 설정이 잘못되었습니다 : x => x. ValidateUser (.validUserName, .validPassword) "를 입력하십시오. – Dilma
가상 키워드를 추가하거나 인터페이스를 확장하고 인터페이스 구성원을 조롱하면 ValidateUser를 재정의 할 수 있습니다. –
당신을 방해해서 죄송합니다 .. 몇 가지 코딩 예제를 게시 할 수 있었습니까. 나는 너의 친절을 정말 호소한다. 고맙습니다. (내 질문을 업데이트했습니다) – Dilma