I have an ICreateService class that has a dependency on ITicketApiAdapter . I tried registering mock ITicketAdaper so that it is entered when I create an anonymous create service.
So, in the setup, I have this register for the ticket adapter:
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));
In my opinion, this should freeze both ICreateService and Mock<ITicketApiAdapter> so that when I request an anonymous instance, I register it.
I have a test that looks like this:
[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)); }
I expect the apiTicketAdapter to be the one I registered so that I can check if the method is called. If I exit, TicketApiAdapter is called, but Moq says it is not.
Edit
This is the error I get:
CreateServiceCallsAddTicketComment throws an exception: Moq.MockException: the expected call to the layout once, but it was 0 times: x => x.AddTicketComment (It.IsAny (), It.IsAny (), It.IsAny ())
Configured settings: x => x.AddTicketComment (It.IsAny (), It.IsAny (), It.IsAny ()), Times.Never No calls made.