확장 메서드의 결과에 따라 달라지는 테스트를 작성 중이지만 해당 확장 메서드의 향후 실패로 인해이 테스트가 중단되는 것을 원하지 않습니다. 그 결과를 조롱하는 것이 당연한 선택으로 보였지만 Moq는 정적 메서드 (확장 메서드에 대한 요구 사항) 를 재정의하는 방법을 제공하지 않는 것 같습니다 . Moq.Protected 및 Moq.Stub에도 비슷한 아이디어가 있지만이 시나리오에 대해서는 아무것도 제공하지 않는 것 같습니다. 내가 뭔가를 놓치고 있습니까, 아니면 다른 방식으로 진행해야합니까?
다음은 일반적인 "재정의 할 수없는 멤버에 대한 잘못된 기대"로 실패하는 간단한 예입니다 . 이것은 확장 메서드를 모의해야하는 나쁜 예이지만 그래야합니다.
public class SomeType {
int Id { get; set; }
}
var ListMock = new Mock<List<SomeType>>();
ListMock.Expect(l => l.FirstOrDefault(st => st.Id == 5))
.Returns(new SomeType { Id = 5 });
대신 Isolator를 사용하도록 제안 할 수있는 TypeMock 중독자에 대해서는 TypeMock이 눈을 가리고 술에 취해 작업을 수행 할 수있는 것처럼 보이지만 우리의 예산은 곧 증가하지 않습니다.