#c# #moq
#c# #moq
Вопрос:
Мне нужно издеваться над методом, который возвращает интерфейс, и я не могу в этом разобраться. Это была моя попытка. Я не знаю, как что вернуть, так как вы не можете вернуть интерфейс.
messagingClient.Setup(x =>
x.CreateMessage(new OrganizationUserDeletedDomainEvent
{
UserType = 1,
OrganizationUserId = 1,
OrganizationId = 1,
DeletedAt = 100000
})).Returns();
Метод имеет такую подпись:
IMessage<TContent> CreateMessage<TContent>(TContent messageContent)
where TContent : class, new();
Комментарии:
1. Имитировать тип, который реализует интерфейс, и возвращать его экземпляр?
2. Можете ли вы показать тестируемому субъекту, что этот макет должен быть применен?
Ответ №1:
вы можете создать макет IMessage
и использовать этот макет для возврата
var messageMock = new Mock<IMessage<OrganizationUserDeletedDomainEvent>>();
messagingClient.Setup(x =>
x.CreateMessage(new OrganizationUserDeletedDomainEvent
{
UserType = 1,
OrganizationUserId = 1,
OrganizationId = 1,
DeletedAt = 100000
})).Returns(messageMock.Object);
Комментарии:
1. Я предлагаю посоветовать им использовать сопоставитель аргументов вместо экземпляра в настройке, поскольку у них возникнут проблемы с получением желаемого поведения