2009-10-22 4 views
1

계정 컨트롤러 -> 등록 동작 -> 밸리데이션 리지 스턴 션 기능에 사용자 등록 양식의 빈칸을 테스트하는 기능을 추가했습니다. 사용자가 입력 한 전자 메일 주소가 이미 시스템에 있으면 양식에 오류가 발생합니다. ValidateRegistration 함수의 끝에 중복 전자 메일 주소를 확인하는 함수를 추가했습니다..NET MVC에서 중복 전자 메일 주소를 테스트하는 방법

linq를 사용하여 데이터베이스를 쿼리하여 사용자 목록을 만들고 런타임 중에 잘 작동하는 전자 메일을 확인합니다. 등록 작업 중 중복 이메일 주소에 대한 사용자 객체 (사용자 이름, 비밀번호 등)를 테스트하여 시각적 기본 테스트를 만들었습니다. ValidateRegistration을 피하여 데이터베이스를 쿼리하고 사용자 목록 (런타임 중에 원하는 것)을 만들지 만 Unit 테스트 중에 ValidateRegistration을 가짜 사용자 객체로 공급합니까?

샘플 코드 : 계정 콘트롤은

public ActionResult Register(string username... string password...) 
    { 

      //Call the ValidateRegistration(string username... string password...); 

      //Add user if ValidateRegistration checks have passed 
    } 

공공 ValidateRegistration은 (문자열 사용자 이름 ... 문자열 암호는 ...) { // 사용자 이름을 확인하는 경우 빈 // ModelState.AddModelError (사용자 이름이 비어)

// 암호 길이를 확인 // ModelState.AddModelError (암호가 너무 짧은 메시지입니다)

// 목록 lstUsers의 =의 GetUsers(); // 전자 메일 주소가 이미 사용 중인지 확인하십시오. // ModelState.AddModelError (이미 전자 메일 사용)

// 위 전자 메일 주소 검사의 단위 테스트는 어떻게합니까?

}

에 SampleCode는 : 단위

public void RegisterPostReturnsViewIfFirstnameNotSpecified() 
    { 
     // Arrange 
     AccountController controller = GetAccountController(); 

     // Act 
     ViewResult result = (ViewResult)controller.Register(string username... string password...) 

     // Assert 
     Assert.AreEqual(6, result.ViewData["PasswordLength"]); 
     Assert.AreEqual(See if error message is equal); 
    } 

답변

0

당신은 "의존성 삽입 (Dependency Injection)"또는 "제어의 반전"로 보일 것을 테스트합니다. 새로운 개체 (데이터베이스 액세스 계층 [DAL])를 요청할 때 런타임에 생성되는 형식을 구성 할 수있는 인기있는 IoC 컨테이너가 많이 있습니다.

DI의 기본 전제는 사용할 DAL을 결정하는 컨트롤러가 아니라 컨트롤러에 "이 DAL 사용"을 지시한다는 것입니다. IoC를 사용하면 유닛 테스트에서 누군가가 DAL을 요청할 때 생성되는 클래스를 구성하고 컨트롤러가 DAL을 컨테이너에 요청합니다.

매우 좋은 출발점은 Martin Fowler's article.

입니다.
관련 문제