У меня есть класс ICreateService
, который зависит от ITicketApiAdapter
. Я попытался зарегистрировать фиктивный ITicketAdaper, чтобы он вводился при создании анонимного сервиса создания.
Итак, в настройке у меня есть этот регистр для адаптера билета:
Fixture.Register(() =>
{
var ticketApiAdapter = new Mock<ITicketApiAdapter>();
ticketApiAdapter
.Setup( x => x.AddTicketComment(
It.IsAny<User>(),
It.IsAny<Customer>(),
It.IsAny<TicketComment>()))
.Returns(new SaveResult
{
Success = true,
Id = Fixture.CreateAnonymous<Guid>().ToString()
});
return ticketApiAdapter;
});
Fixture.Register(() => new CreateService(Fixture.CreateAnonymous<Mock<ITicketApiAdapter>>().Object));
Насколько я понимаю, это должно "заморозить" и ICreateService
, и Mock<ITicketApiAdapter>
, так что когда я запрашиваю анонимный экземпляр, это тот, который я зарегистрировал.
У меня есть тест, который выглядит так:
[TestMethod]
public void CreateServiceCallsAddTicketComment()
{
var apiTicketAdapter = Fixture.CreateAnonymous<Mock<ITicketApiAdapter>>();
var createTicketRequest = Fixture.CreateAnonymous<CreateTicketComment>();
var createService = Fixture.CreateAnonymous<CreateService>();
var results = createService.CreateTicketComment(createTicketRequest);
apiTicketAdapter
.Verify(x => x.AddTicketComment(
It.IsAny<User>(),
It.IsAny<Customer>(),
It.IsAny<TicketComment>()),
Times.Once());
Assert.IsTrue(results.All(x => x.Success));
Assert.IsTrue(results.All(x => x.Errors.Count == 0));
}
Я ожидаю, что apiTicketAdapter будет тем, который я зарегистрировал, чтобы я мог проверить, вызван ли метод. Если я прохожу, вызывается TicketApiAdapter, но Мок говорит, что это не так.
Редактировать
Это ошибка, которую я получаю:
Исключительная ситуация CreateServiceCallsAddTicketComment:
Moq.MockException: ожидаемый вызов на макет один раз, но был 0
времена: x => x.AddTicketComment (It.IsAny (), It.IsAny (),
It.IsAny ())
Сконфигурированные настройки: x => x.AddTicketComment (It.IsAny (),
It.IsAny (), It.IsAny ()), Times.Never Нет
выполненные вызовы.