RhinoMocks에서 모의 객체를 담요 문으로 IgnoreArguments로 말할 수 있습니다. Moq에서는 각 인수에 대해 It.IsAny()를 지정해야합니다. 그러나 이것은 ref 및 out 인수에 대해서는 작동하지 않습니다.Moq가 참조 또는 무시하는 인수를 무시하는 방법
public void MyMethod() {
// DoStuff
IList<SomeObject> errors = new List<SomeObject>();
var result = _service.DoSomething(ref errors, ref param1, param2);
// Do more stuff
}
시험 방법 :
public void TestOfMyMethod() {
// Setup
var moqService = new Mock<IMyService>();
IList<String> errors;
var model = new MyModel();
// This returns null, presumably becuase "errors"
// here does not refer to the same object as "errors" in MyMethod
moqService.Setup(t => t.DoSomething(ref errors, ref model, It.IsAny<SomeType>()).
Returns(new OtherType()));
}
UPDATE : 그래서, "심판"에서 오류 변화에 내가 특정 결과를 반환하기 위해 내부 서비스 호출을 MOQ을 필요로하는 곳에 나는 다음과 같은 방법을 테스트 할 수있는 방법 "밖으로"작동합니다. 실제 문제는 주입 할 수없는 ref 매개 변수를 갖는 것 같습니다.
당신 때문에 샘플이 3 인자'초과 오류, PARAM1, param2'을 가지고 있지만 테스트에서 두 개의 인수를 호출하는'초과 오류, It.IsAny에 DoSomething''의 서명을 게시 할 수()'어쩌면 코드가 작동하기 때문에 잘못된 오버로드를 조롱하고있을 수도 있습니다. [moq help methods section] (http://code.google.co.kr/p/moq/wiki/QuickStart). –
nemesv
그건 그냥 예제였다 -하지만 난 예제 코드를 병렬로 테스트를 업데이 트했습니다 – sydneyos