이 메서드를 올바르게 조롱하는 방법을 알아낼 수 없습니다. 내가 조롱 할 방법은 다음과 같습니다 :파생 된 인수를 사용하여 메서드를 호출하는 중
는public virtual void Publish<TEvent>(TEvent evt) where TEvent : IDomainEvent {
HandlerInvoker.Invoke(evt);
}
내가 조롱하려는 TEvent의 예는 다음과 같습니다 나는이 조롱 수 있어요
public interface IOrderPlaced : IDomainEvent {}
내가 사용하는 경우 :
mock.Setup(h => h.Publish(It.IsAny<IOrderPlaced>));
그러나 IDomainEvent에서 파생 된 모든 인터페이스에 대한 메소드를 모의하고 싶습니다.
mock.Setup(h => h.Publish(It.IsAny<IDomainEvent>));
하지만 전혀 작동하지 않습니다. 특정 인터페이스를 사용하여 mock을 설정할 때만 작동합니다. 하지만 그것은 IDomainEvent에서 파생 된 100 개가 넘는 인터페이스를 가지고 있기 때문에 완전히 비현실적입니다. 말할 것도없이 나는 짐을 꾸려야 각자 개별적으로 모의해야한다. 아무도 내가 뭘 잘못 본거야?
제네릭에 대한 나의 이해가 완벽하지 않습니다. 제가 점수를 뺀다면 제 대답을 개선하도록 도와주세요. – perfectionist
예 .Callback()을 사용하여 특정 IDomainEvent가 Published()인지 확인하는 테스트 용 목록에 IDomainEvent를 추가 할 수 있습니다. – Brian
좋아, 우리는 아마도 수동으로 완전히 수동 mocking 클래스를 만들거나 Moq Mock을 포장하여 특정 문제를 해결할 수 있습니다. <> ... IDomainEvents의 목록을 대조하고 검사하고 있습니다 ** 모두 ** 수행하고 싶습니다. ? (나는 작업 후 몇 시간 만에 다시 돌아올 것이다.) – perfectionist