그래서 SpecFlow를 사용하여 테스트중인 MVC 앱으로 작업하고 있습니다. here으로 설명한 [RequiredIf(prop, val)]
구현을 사용합니다.SpecFlow 유닛 테스팅의 유효성 검사기에 속성 바인딩하기
그러나 '약간의'문제가 발견되었습니다. 웹 페이지에서 유효성 검사가 제대로 작동하지만 단위 테스트가 중단됩니다. 조사 결과, 속성의 IsValid() 메서드가 우리 단위 테스트에서 직접 호출되는 것으로 나타났습니다. 속성이 유효성 검사기에 바인딩되지 않았기 때문일 수 있습니다.
블로그에서 필자는 RequiredIf 속성을 유효성 검사기에 등록하기위한 설정 단계를 따랐습니다. 그러나 특정 단위 테스트의 목적을 위해 테스트 설정에서 유효성 검사를 바인딩 할 위치를 찾아야합니다.
내가 시도한 몇 가지 더 또는 덜 논리적 옵션 :
[Binding]
public class TestSteps
{
// Every test has to call this helper to load up the controller...
private void GoToHome()
{
// SNIP: Unimportant
DataAnnotationsViewModelValidatorProvider.RegisterAdapter(..., ...);
}
}
...뿐만 아니라 테스트 스위트 파일에 ... 그러나
// See attribute for why I figured this may be a logical choice.
[BeforeScenario]
public void Setup()
{
DataAnnotationsViewModelValidatorProvider.RegisterAdapter(..., ...);
}
... 어떤 이유로 든 어느 지역도 이 RequiredIfValidator()
에 바인딩되지 않습니다.
질문 : 단위 테스트의 경우 단위 테스트에서 RequiredIf()
인 경우 장식 된 속성의 유효성을 올바르게 검사 할 수 있도록 속성 -> 유효성 검사기 바인딩을 어디에 배치해야합니까?
제안 해 주셔서 감사합니다. 지금은, 더 이상 책임을 부여하지 않고 my.IsValid() 구현체에 더 추가하여 등록을하지 않기로 결정했습니다. 답변을 생각해 주셔서 고맙습니다. 심지어 우리는 하나도 생각해 낼 수 없었습니다. –