나는 Machine.Fakes로 막 다른 골목에 섰다. 나는 매개 변수를 만을 모의하는 방법을 알아낼 수 없다. Machine.Fakes 장비. RhinoMocks에 a bug이 있었기 때문에, 저는 Make 어댑터를 FakeItEasy로 전환했습니다. 내가 알 수있는 한, 모든 어댑터는 상호 교환이 가능해야합니다.어떻게 mock 프레임 워크와 독립적으로 Machine.Fakes와 'out'매개 변수를 조롱합니까?
Arg
은 Rhino.Mocks이기 때문에 문제가 발생하여 "out"테스트가 실패하고 더 이상 컴파일되지 않는 것입니다.
The<IMembershipService>()
.WhenToldTo(x => x.CreateUser(Param<string>.IsAnything,
Param<bool>.IsAnything,
Param<object>.IsAnything,
out Arg<MembershipCreateStatus>
.Out(MembershipCreateStatus.UserRejected)
.Dummy))
.Return(user);
나는 원래 Arg<T>
PARAM가로 설정 동일한 값으로 설정 "더미"지역 변수를 사용하여 시도,하지만이 실패 할 내 테스트가 발생했습니다 - 값이되지 않는 것처럼 보인다 지나가 다! Arg<T>
에는 정말 해결책이 있었지만 Rhino의 일부인 것처럼 더 이상 사용할 수 없습니다. 모의.
+1이것은 void 메소드에서만 작동하는 것처럼 보입니다. 많은 경우에'out' 매개 변수가 추가 반환 값을 반환하는 데 사용되기 때문에 약간 제한적으로 보입니다. – MattDavey
예, @MattDavey, void 메소드에만 구현했습니다. 제한적이라고 생각하지만 쿼리를 구현하면 API가 복잡해집니다. –
또한 잘못된 매개 변수로 간주되기 때문에 out 매개 변수 지원은 원래 구현되지 않았습니다. NET Framework에서도 매개 변수를 사용하기 때문에 가치가있는 옵션이라고 생각합니다. 하지만 한 가지 방법으로 반환 값과 출력 매개 변수가 좋은 디자인이라고 말할만큼 멀리 가지 않을 것입니다. 튜플을 반환하거나 여러 개의 매개 변수가 있다고 말하고 싶습니다. 그래서 저는 MFakes를 이런 방식으로 계속 주장했습니다. –