2016-12-02 5 views
2

스위트 룸에서 예기치 않은 Matcher를 인수를 throw() 일부 샘플 데이터를 반환 ReSharper 러너, 테스트가 단독으로 실행됩니다. 솔루션에서 모든 테스트를 실행할 때처럼 목록의 일부로 실행될 때 실패합니다.NSubstitute 시험 자체에 의해 작동하지만, 내가 .Returns를 사용하는 단위 테스트를

NSubstitute.Exceptions.UnexpectedArgumentMatcherException : 인수 matchers (Arg.Is, Arg.Any)는 멤버 인수 대신 사용해야합니다. Return() 문 또는 멤버 호출 외부의 다른 곳에서는 사용하지 마십시오.

Arg.Any 또는 Arg.Is를 사용하는 곳을 어디에도 알 수 없습니다. NS substitute가 불평하는 이유는 무엇입니까? 이것은 .Returns()를 사용하여 비 네이티브 객체의 목록을 반환 할 때 발생합니다.

답변

4

이는 가상이 아닌 방법이나 Returns 문에 대한 인수 매처를 사용한 이전 테스트로 가장 비슷합니다.

불행히도 디버깅은 매우 까다로울 수 있습니다. 첫 번째 단계는이 조명기에서 모든 테스트를 실행할 때 문제가 발생하는지 확인하는 것입니다. 만약 그렇다면, 테스트기구가 예측 가능한 테스트 순서를 사용한다면, 테스트가 실패하기 직전에 실행되는 것부터 시작하여 해당 픽스쳐에있는 Arg.Is|Any의 모든 용도를 확인하십시오. 그렇지 않으면 테스트 로그를보고 어떤 테스트가 진행되는지 확인해야합니다 실패한 것).

해당 조명기에서 발생하지 않으면 미리 실행 된 조명기를 살펴보고 나머지 arg 일치기가 어디에서 왔는지 확인해야합니다. 실패한 시험 가까운 곳에서 가장 가능성이 큽니다.

+0

Arg.Any 의 잘못된 사용이 실패한 테스트 바로 이전 테스트에서 발견되었습니다. 고맙습니다. –