The ContentResult I am trying to check in unit test of the getMethod(string id) is always returning null. The Service called by controller returns DTO Model.
I have tried actionresult as OkNegotiatedContentResult actionresult as OkNegotiatedContentResult
Unit Test:
[TestMethod]
public void GetUserInformation_ReturnsUserDetails()
{
//Arrange
UserDetails userDetails = new UserDetails();
mockUserService.Setup(x =>
x.GetuserInformation(It.IsAny<string>
())).Returns(userDetails);
//Act
IHttpActionResult result =
userController.GetUserInformation("226");
var contentResult = result as
OkNegotiatedContentResult<UserDetails>;
//Assert
//Validate Ok Result
Assert.IsNotNull(contentResult);//this fails
Assert.IsNotNull(contentResult.Content);
Assert.AreEqual("226", contentResult.Content.userID);
Assert.IsInstanceOfType(result,
typeof(OkNegotiatedContentResult<UserDetails>));//this assert works
}
Controller:
public IHttpActionResult GetUserInformation(string userID)
{
if (!string.IsNullOrEmpty(userID))
{
var result = _userService.GetUserInformation(userID);
if (result != null)
{
return Ok(result);
}
return InternalServerError();
}
else
{
return BadRequest("User Not Found");
}
}
Service Layer:
public UserDetails GetUserInformation(string userID)
{
UserDetails userDetails = new UserDetails();
//business logic
return userDetails;
}
ContentNegotiator = '((System.Web.Http.Results.OkNegotiatedContentResult)result).ContentNegotiator' threw an exception of type 'System.InvalidOperationException'
Request = '(result as OkNegotiatedContentResult).Request' threw an exception of type 'System.InvalidOperationException'