Я много редактировал и упрощал этот вопрос.
Если у меня есть этот метод на моем HomeController:
public ActionResult Strangeness( int id )
{
StrangenessClass strangeness = null;
if( id == 1 )
{
strangeness = new StrangenessClass() { Name="Strangeness", Desc="Really weird behavior" };
}
return View( strangeness );
}
И есть этот класс:
public class StrangenessClass
{
public string Name { get; set; }
public string Desc { get; set; }
}
Почему этот модульный тест не пройден?
[TestMethod]
public void Strangeness()
{
HomeController controller = new HomeController();
ViewResult result = controller.Strangeness( 1 ) as ViewResult;
var model = result.ViewData.Model;
result = controller.Strangeness( 2 ) as ViewResult;
model = result.ViewData.Model;
Assert.IsNull( model );
}
Я понимаю, что обычно у меня будет один тест, чтобы проверить нулевое условие, и другой, чтобы проверить хорошее состояние, но я столкнулся с этой проблемой при тестировании моего контроллера удаления. В тесте на удаление я обычно извлекаю запись, удаляю запись и затем пытаюсь получить ее снова. Это должно быть нулевым во второй раз, когда я получаю это, но это не было. Итак, я свел проблему, как описано выше.
Если это неправильный способ проверки удалений, как бы вы это сделали? Вам не нужно убедиться, что запись была действительно удалена?