I was having unit test about my controller which was looking like that:
[Test]
public void Test()
{
//Arrange
var dummySeamlessCustomerRequest = CustomerControllerTestsHelper.CreateDummyCustomerRequest();
var dummySeamlessCustomerResponse = CustomerControllerTestsHelper.CreateDummyCustomerResponse();
_mockSeamlessService.Setup(s => s.GetSeamlessCustomerCallRequest(_controller.Request, "Credit Customer"))
.Returns(new ModuleResultSet<SeamlessCustomerRequest>(HttpStatusCode.OK, null, dummySeamlessCustomerRequest));
_mockAdapter.Setup(a => a.SendCreditCustomerCallToProvider(dummySeamlessCustomerRequest))
.Returns(dummySeamlessCustomerResponse);
//Act
var actionResult = _controller.CreditCustomer();
var expectedResponse = actionResult as ResponseMessageResult;
//Assert
Assert.IsNotNull(expectedResponse);
Assert.AreEqual(CustomerControllerTestsHelper.CreateSeamlessCustomerResponseString(dummySeamlessCustomerResponse),
expectedResponse.Response.Content.ReadAsStringAsync().Result);
}
My targeted method by the test is the following:
public override IHttpActionResult CreditCustomer()
{
//...
using (var response = new HttpResponseMessage())
{
//...
return this.ResponseMessage(response);
}
}
I left most important part of the method to me(if you think I should show more tell me but there are only some service calls that I mock in my test with ease. Problem is that when I run my test I receive following error:
Test Name: Test Test FullName: ETIAdapter.Tests.Controllers.CustomerControllerTests.Test Test Outcome: Failed Test Duration: 0:00:00.005
Result StackTrace:
at System.Net.Http.HttpContent.CheckDisposed() at System.Net.Http.HttpContent.ReadAsStringAsync() at ETIAdapter.Tests.Controllers.CustomerControllerTests.Test() in D:\Repositories\test_seamless-service\seamless-service\src\ETIAdapter.Tests\Controllers\CustomerControllerTests.cs:line 79 Result Message: System.ObjectDisposedException : Cannot access a disposed object. Object name: 'System.Net.Http.StringContent'.
I tried to search for solutions to test such methods but I couldn't find it. Most of the questions are about custom objects that implement IDisposable so they are mocking them , but I can't do that with HttpResponseMessage.
Aucun commentaire:
Enregistrer un commentaire