Kei*_*ler 6 tdd nunit rhino-mocks asp.net-mvc-2
如果我使用Rhino Mocks,NUnit和ASP.NET MVC 2,那么简单的单元测试会是什么样的,以确认某个控制器是否存在?我试图围绕TDD的概念,但我无法弄清楚如何像"控制器XYZ存在"这样的简单测试.另外,单元测试在视图中测试动作结果会是什么样的?
Dar*_*rov 11
确认控制器存在
对其操作进行单元测试强烈建议控制器存在,这将我们带到:
从视图中测试动作结果的单元测试是什么样的
这是一个例子:
public class HomeController: Controller
{
private readonly IRepository _repository;
public HomeController(IRepository repository)
{
_repository = repository;
}
public ActionResult Index()
{
var customers = _repository.GetCustomers();
return View(customers);
}
}
Run Code Online (Sandbox Code Playgroud)
和相应的单元测试:
[Test]
public void HomeController_Index_Action_Should_Fetch_Customers_From_Repo()
{
// arrange
var repositoryStub = MockRepository.GenerateStub<IRepository>();
var sut = new HomeController(repositoryStub);
var expectedCustomers = new Customer[0];
repositoryStub
.Stub(x => x.GetCustomers())
.Return(expectedCustomers);
// act
var actual = sut.Index();
// assert
Assert. IsInstanceOfType(typeof(ViewResult), actual);
var viewResult = (ViewResult)actual;
Assert.AreEqual(expectedCustomers, viewResult.ViewData.Model);
}
Run Code Online (Sandbox Code Playgroud)
MVCContrib有一些很棒的功能,允许你模拟HttpContext并测试你的路线.
| 归档时间: |
|
| 查看次数: |
5228 次 |
| 最近记录: |