Проблема в том, что в тестируемом методе предполагается, что productId
обнуляем, следовательно, .Value
. Исключение происходит, когда тест передает фактическое целое число, а не обнуляемое целое.
public void PostRequestWithSingleProductTest() {
//Arrange
int? productId = 1;
var value = new { productId };
//assuming _productController already created and injected with dependency
//Act
var response = _productController.Post(value);
//Assert
Assert.IsNotNull(response);
}
В идеале вы должны использовать строго типизированную модель
public class PostProductModel {
[Required]
public int productId { get; set; }
}
Это позволило бы каркасу правильно связать модель
public IHttpActionResult Post([FromBody]PostProductModel value) {
if(ModelState.IsValid) {
var result = _data.Products.Where(y => y.Id == value.productId).ToList();
return Ok(result);
}
return BadRequest(ModelState);
}
и значительно упростит возможность юнит-тестирования целевого метода.
public void PostRequestWithSingleProductTest() {
//Arrange
var value = new PostProductModel { productId = 1 };
//assuming _productController already created and injected with dependency
//Act
var response = _productController.Post(value) as OkObjectResult;
//Assert
Assert.IsNotNull(response);
}