Tôi mới tham gia mvc4 và cả TDD.MVC4 TDD - System.ArgumentNullException: Giá trị không được rỗng.
Khi tôi thử chạy thử nghiệm này không thành công và tôi không biết tại sao. Tôi đã thử rất nhiều thứ tôi bắt đầu chạy vòng quanh.
// GET api/User/5
[HttpGet]
public HttpResponseMessage GetUserById (int id)
{
var user = db.Users.Find(id);
if (user == null)
{
//return Request.CreateResponse(HttpStatusCode.NotFound);
throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound));
}
return Request.CreateResponse(HttpStatusCode.OK, user);
}
[TestMethod]
public void GetUserById()
{
//Arrange
UserController ctrl = new UserController();
//Act
var result = ctrl.GetUserById(1337);
//Assert
Assert.IsNotNull(result);
Assert.AreEqual(HttpStatusCode.NotFound,result.StatusCode);
}
Và kết quả:
Test method Project.Tests.Controllers.UserControllerTest.GetUserById threw exception:
System.ArgumentNullException: Value cannot be null. Parameter name: request
Sử dụng 'Bước over' trong trình gỡ lỗi của bạn và nhập phương pháp, một cái gì đó phải được 'null' – LukeHennerley
Trên một mặt lưu ý, kiểm tra đơn vị không bao giờ nên truy cập không tĩnh tài nguyên như của db. Bạn nên tiêm những phụ thuộc này. Điều gì sẽ xảy ra khi db của bạn thay đổi? kiểm tra đơn vị của bạn là vô dụng! – Liam
Tôi đoán rằng db là null hoặc db.Users là null. sử dụng trình gỡ lỗi để kiểm tra –