lundi 27 juillet 2015

mocked service is never called

web api integration test

// Arrange
var builder = new ContainerBuilder();
var mockContext = new Mock<TGBContext>();
var mockSchoolclassCodeRepo = new Mock<SchoolclassCodeRepository>(mockContext.Object);
var mockTestRepo = new Mock<TestRepository>(mockContext.Object);
var mockService = new Mock<TestService>(mockTestRepo.Object, mockSchoolclassCodeRepo.Object);
var requestDTO = new EditTestRequestDTO { TestId = 1, Pupils = new List<TestPupilRequestDTO> { new TestPupilRequestDTO { Grade = "3", Id = 1 } } };
mockService.Setup(c => c.EditTest(requestDTO)).Verifiable();
builder.RegisterInstance<TestService>(mockService.Object); // Its enough to register the root instance of the injected service !
builder.Update(((AutofacWebApiDependencyResolver)Startup.HttpConfiguration.DependencyResolver).Container as IContainer);

// Act
var response = base.Client.PutAsync("/api/tests/1", requestDTO, new JsonMediaTypeFormatter()).Result;

// Assert
Assert.AreEqual(response.StatusCode, HttpStatusCode.NoContent);
mockService.Verify(service => service.EditTest(requestDTO), Times.Once);

Error when mockService.Verify is asserted

An exception of type 'Moq.MockException' occurred in Moq.dll but was not handled in user code

Additional information: 

Expected invocation on the mock once, but was 0 times: service => service.EditTest(.requestDTO)



Configured setups:

c => c.EditTest(.requestDTO), Times.Never



Performed invocations:

TestService.EditTest(TGB.DataTransferObject.EditTestRequestDTO)

Question

Why is my mocked service never called according to the error message?

When I debug my test then of course the service method IS called!

Aucun commentaire:

Enregistrer un commentaire