2009-05-17 5 views
5

나는 Moq 3.x를 사용하려고하는데, 그것은 훌륭하게 작동합니다. 그러나 해결 방법을 찾을 수없는 문제가 있습니다.Moq with Action 인수가

var passingTestSpec = new Mock<ITestSpec>(); 
passingTestSpec 
    .Setup(m => m.Run(null)) 
    .Returns(true); 

Action<string, string> fakeAction = 
    (expected, actual) => { throw new Exception("Should not run"); }; 

Assert.IsTrue(passingTestSpec.Object.Run(fakeAction)); 

내 문제는 passingTestSpec.Object.Run에 어떤 호출 (... 액션의 ...) false를 반환하는 것입니다 :

public interface ITestSpec 
{ 
    bool Run(Action<string, string> onIncorrectResponse); 
} 

을 감안할 때 나는 다음과 같은 노력하고 있습니다. Moq 라이브러리가 Setup() 호출에서 Run()에 전달한 인수에 작업을 일치 시키려고 시도하는 중일 수 있습니다. 실제로 Run() 호출에 어떤 액션을 넣든 상관 없습니다 ... 여전히 false를 반환합니다.

아이디어가 있으십니까?

[편집] 방금 뭔가 발견했습니다. 설정 라인을

.Setup(m => m.Run(fakeAction)) 

으로 바꾸면됩니다. 그러나 .Run() 메서드를 호출 할 동작을 알 수 없으므로이 방법은 해결책이 아닙니다. 아무도 그것을 안다. 행동에 대한 동등한 가치가 있니?

답변

13

문제의 새로운 기능 :

It.IsAny<Action<string, string>>() 
+0

나는 사람이 ... 해결책을 찾을 것입니다 나는이 :(덕분에 몇 시간을 낭비 생각을 알고 있어야 LOL, 나는 그와 함께 갈 것을, 그것은 더 나은 내것보다. –