I was working on a little pet project recently, and I really was tickled when I wrote my unit tests like this:
public class Given_a_HomeController
{
private static HomeController controller;
[TestClass]
public class when_asked_for_the_index
{
private ActionResult the_result;
[TestInitialize]
public void because()
{
using_a_new_home_controller();
after_performing_the_index_action();
}
public void using_a_new_home_controller()
{
controller = new HomeController();
}
public void after_performing_the_index_action()
{
the_result = controller.Index();
Assert.IsNotNull(the_result);
}
[TestMethod]
public void it_should_return_a_ViewResult_for_the_Index_view()
{
the_result.is_a_ViewResult().for_a_view_named("Index");
}
}
If you can read through the test attribute decorators and the public void C# noise, the setup and the tests read like this:
Given a HomeController:
When asked for the index:
because:
using a new HomeController
after executing the Index action
it should return a ViewResult for the Index View
It made me smile.
No comments:
Post a Comment