2014-12-29 2 views
3

NSubstitute를 사용하여 익명의 함수가 호출되었는지 확인하고 싶습니다. 내가 가지고있는 클래스의 메서드는 Func<> 매개 변수를 사용하며이 매개 변수가 호출되는지 (또는 호출되지 않도록) 확인하려고합니다. 나는 다음 시도했다, 그러나 작동하지 않습니다NSubstitute를 사용하여 익명의 함수가 호출되었는지 어떻게 확인할 수 있습니까?

var spy = Substitute.For<Func<string, int>>(); 
MyClass.DoSomething(spy); 
spy.Invoke(Arg.Any<string>()).Received(); 

이 그러나 예외가 발생합니다 :

NSubstitute.Exceptions.NullSubstituteReferenceException : NSubstitute extension methods like .Received can only be called on objects created using Substitute.For<T>() and related methods. 

답변

6

spy.Received().Invoke(Arg.Any<string>()); 

spy.Invoke(Arg.Any<string>()).Received(); 

를 교체 시도를

귀하의 제품 기능 코드는 spy.Invoke() 또는 spy()을 통해 기능을 호출합니다. 그러나 코드가 BeginInvoke이라면 테스트는 성공하지 못합니다. 하지만 문제가되지 않아야한다고 생각합니다. Invoke 또는 BeginInvoke에 대한 테스트가 필요한지 미리 알아야하기 때문입니다.

+0

스파이가 호출되는 방식과는 별도로 검사 할 방법이 있습니까? 마찬가지로 BeginInvoke를 사용하여 호출했을 수 있습니다.이 테스트는 통과 할 것이라고 생각하지 않습니다. – Marius

관련 문제