또 다른 대안은 두 개체를 비교할 수있는 어설 션 프레임 워크를 사용하여 호출 전후의 개체가 동일한 지 비교하는 것입니다. 메서드가 동일한 객체 유형을 반환하면 반환 된 객체를 사용하여 원본과 비교할 수 있습니다. 종속성
[Test]
public void Foo_WhenCallingFoo_ShouldNotAlterTheRequest()
{
var request = new Request();
var result = Foo(Request);
result.ShouldBeEquivalentTo(requests);
}
또는 시험에서 방법은 다른 유형을 반환하는 경우, 당신은에 전달 된 개체를 가져 콜백을 사용할 수 있습니다에 의해 사용되는 오브젝트를 얻기 위해, MOQ를 사용하는 경우 그렇지 않은 경우, 콜백을 사용할 수 있습니다 의존성을 비교하고 그와 비교하십시오 :
// Arrange
Request requestUsedBySomeObject = null;
var originalRequest = new Request();
var someObject = new Mock<SomeObject>();
someObject.Setup(s => s.Bar(It.IsAny<Request>()).Callback<Request>(r => requestUsedBySomeObject = r));
// Act
Foo(originalRequest);
// Assert
originalRequest .ShouldBeEquivalentTo(requestUsedBySomeObject);
DTO, 'Request'를 조롱 할 수 있습니까? –
내 생각 엔 ... 그건 DTO에 인터페이스를 추가하는 것을 의미합니다. 나는 그걸 생각하지 않았다. – BanksySan