Я новичок в mvc4, а также TDD.MVC4 TDD - System.ArgumentNullException: значение не может быть нулевым.
Когда я пытаюсь запустить этот тест, он терпит неудачу, и я понятия не имею, почему. Я пробовал так много вещей, которые я начинаю кругами.
// 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);
}
И результаты:
Test method Project.Tests.Controllers.UserControllerTest.GetUserById threw exception:
System.ArgumentNullException: Value cannot be null. Parameter name: request
Использование 'Шаг over' в отладчики и ввести метод, то должно быть' null' – LukeHennerley
На стороне записки, юнит-тесты не должны обращаться ни статическую таких ресурсов, как db's. Вы должны вводить эти зависимости. Что происходит, когда изменяется ваш дБ? ваш юнит-тест бесполезен! – Liam
Я бы предположил, что db имеет значение null или db.Users равно null. используйте отладчик для проверки –