Jestem nowy dla mvc4, a także TDD.MVC4 TDD - System.ArgumentNullException: Wartość nie może być pusta.
Kiedy próbuję uruchomić ten test, zawiedzie i nie mam pojęcia dlaczego. Próbowałem tak wielu rzeczy, które zaczynam biegać w kółko.
// 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);
}
A wyniki:
Test method Project.Tests.Controllers.UserControllerTest.GetUserById threw exception:
System.ArgumentNullException: Value cannot be null. Parameter name: request
Wykorzystanie 'Krok over' w debugger i wprowadzić metodę, coś musi być' null' – LukeHennerley
Na marginesie, testy jednostkowe nie powinien przejść żadnego statycznego zasoby takie jak db. Powinieneś wstrzyknąć te zależności. Co się stanie, gdy zmieni się db? Twój test jednostki jest bezużyteczny! – Liam
Domyślam się, że db ma wartość null lub db.Users ma wartość null. użyj debuggera, aby sprawdzić –