나는에 따라 값을 반환 코뿔소 모의 객체와 스텁을 설정하기 위해 노력하고있어 전달 된 인수의 매개 변수는 코뿔소 모의 객체로 인수에서 복잡한 데이터 형식을 반환
예 :.
//Arrange
var car = new Car();
var provider= MockRepository.GenerateStub<IDataProvider>();
provider.Stub(
x => x.GetWheelsWithSize(Arg<int>.Is.Anything))
.Return(new List<IWheel> {
new Wheel { Size = ?, Make = Make.Michelin },
new Wheel { Size = ?, Make = Make.Firestone }
});
car.Provider = provider;
//Act
car.ReplaceTires();
//Assert that the right tire size was used when replacing the tires
문제는 제가 휠이 올바른 크기라는 것을 나중에 실제로 주장하기 때문에 크기가 메서드에 전달 된 것이기를 바랍니다. 이는 데이터 제공자가 내가 쓴 이후 명백하게 작동한다는 것을 증명하는 것이 아니라 정확한 크기가 전달되었음을 증명하는 것입니다.
어떻게하면됩니까?
@David WhenCalled는 내가 취해야하는 정확한 접근 방식이었습니다. 인수를 통해 모의문을 전달한 다음 나중에 검증 할 수 있습니다. Return 기능을 사용하지 않고도 WhenCalled 기능을 사용할 수있는 방법이 있거나 아니면 어쨌든 여러 기능을 통합하여 사용하는 것이 좋을 것입니다. – Joseph
@Joseph, WhenCalled/Return을 사용하지 않아도되는 가장 쉬운 대안은 Arg .Is.Anything을 사용하는 대신 GetWheelsWithSize로 전달되는 값을 제어한다는 것입니다. 그러므로 내 답변에서 첫 번째 제안입니다. 값을 얻을 수 없다면 리팩토링 할 가치가있어 논리가 분리되고 단위 테스트 할 수 있습니다. –