У меня есть класс 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, но Moq говорит, что это не так.
Редактировать
Это ошибка, которую я получаю:
CreateServiceCallsAddTicketComment сгенерировал исключение: Moq.MockException: ожидался вызов в макете один раз, но был 0 раз: x => x.AddTicketComment (It.IsAny (), It.IsAny (), It.IsAny ())
Настроенные настройки: x => x.AddTicketComment (It.IsAny (), It.IsAny (), It.IsAny ()), Times.Never Вызовы не выполнялись.
CreateService
вызываетITicketApiAdapter.AddTicketComment()
внутриCreateService.AddTicketComment()
. Итак, когда я звонюCreateService.AddTicketComment()
, я ожидаю, что он позвонитITicketApiAdapter.AddTicketComment()
- person scottm   schedule 09.11.2011