我正在尝试运行我的测试,但是我收到“对象引用未设置为对象的实例”。有什么想法吗?我正在使用起订量。
测试方法:
// Arrange
Mock<ICustomerRepository> CustomerRepo = new Mock<ICustomerRepository>();
Customer NewCustomer = new Customert() { ID = 123456789, Date = DateTime.Now };
CustomerRepo.Setup(x => x.Add()).Returns(NewCustomer);
var Controller = new CustomerController(CustomerRepo.Object, new Mock<IProductRepository>().Object);
// Act
IHttpActionResult actionResult = Controller.CreateCustomer();
Run Code Online (Sandbox Code Playgroud)
创建客户方法:
Customer NewCustomer = CustomerRepository.Add();
//ERROR OCCURS BELOW
return Created(Request.RequestUri + "/" + NewCustomer.ID.ToString(), new { customerID = NewCustomer.ID });
Run Code Online (Sandbox Code Playgroud) 我试图用Ihttpstatus标头获取此JSON响应,该标头声明代码201并保持IHttpActionResult作为我的方法返回类型.
我想要的JSON返回:
{"CustomerID":324}
我的方法:
[Route("api/createcustomer")]
[HttpPost]
[ResponseType(typeof(Customer))]
public IHttpActionResult CreateCustomer()
{
Customer NewCustomer = CustomerRepository.Add();
return CreatedAtRoute<Customer>("DefaultApi", new controller="customercontroller", CustomerID = NewCustomer.ID }, NewCustomer);
}
Run Code Online (Sandbox Code Playgroud)
JSON返回:
"ID":324,"日期":"2014-06-18T17:35:07.8095813-07:00",
以下是我尝试过的一些回报,或者给了我uri null错误,或者给了我类似于上面例子的回复.
return Created<Customer>(Request.RequestUri + NewCustomer.ID.ToString(), NewCustomer.ID.ToString());
return CreatedAtRoute<Customer>("DefaultApi", new { CustomerID = NewCustomer.ID }, NewCustomer);
Run Code Online (Sandbox Code Playgroud)
使用httpresponsemessage类型方法,可以解决此问题,如下所示.但是我想使用IHttpActionResult:
public HttpResponseMessage CreateCustomer()
{
Customer NewCustomer = CustomerRepository.Add();
return Request.CreateResponse(HttpStatusCode.Created, new { CustomerID = NewCustomer.ID });
}
Run Code Online (Sandbox Code Playgroud)