我正在开始一个新项目(好吧,重新启动现有项目),并尝试采用TDD(第n次)来获得它应该带来的所有好处.
我相信TDD将导致我的测试驱使我只编写我需要编写的代码,但它会驱使我编写我需要的代码,而不是留下一些代码.
这就是我目前的不确定状态.
考虑这个故事:
"用户必须能够添加小部件,这样做才能查看新添加的小部件的详细信息."
好吧,所以从UI工作(就像用户将从中添加他们的小部件,而不是使用Visual Studio和我写的一组程序集)......我从下面的测试开始,编写非常小的,以便测试通过.
所以我开始使用控制器抛出一个NotImplementedException,然后返回一个View()......以下是我写的最少的第一点,我可以让测试通过.
[TestFixture]
public class WidgetControllerTester
{
[Test]
public void Create_IfBusinessModelIsValid_ReturnRedirectToRouteResultToDetailsAction()
{
// Arrange
var currentUser = new User
{
DisplayName = "Fred",
Email = "fred@widgets.com",
Password = "pass",
Status = UserStatus.Active
};
var model = new WidgetModel();
var controller = new WidgetController();
// Act
var actionResult = controller.Create(currentUser, model);
// Assert
actionResult.AssertActionRedirect().ToAction("Details");
}
}
public class WidgetModel
{
}
public class WidgetController: Controller
{
public ActionResult Create()
{
return View("Create");
}
[HttpPost]
public …Run Code Online (Sandbox Code Playgroud)