7
我完全是Moq的新手,迄今为止只是遵循Pro asp.net框架中概述的示例。在这本书中,一些糟糕的东西被放置在控制器中,比如通过id获取客户 - 可能是为了简洁起见。我决定把这种类型的功能放在版本库中,并在控制器中调用它,就像“customerRepository.GetCustomerByID(id);”测试类似这样的最好方法是什么?我创建了以下单元测试,出于某种原因返回null Customer。使用Moq的单元测试资源库
List<Customer> customer = new List<Customer>();
customer.Add(new Customer { CustomerId = 1, FirstName = "test", LastName = "wods", Sex = true });
mockRepos = new Moq.Mock<ICustomerRepository>();
mockRepos.Setup(x => x.Customers).Returns(customer.AsQueryable());
CustomersController controller = new CustomersController(mockRepos.Object);
//Act
ViewResult results = controller.Edit(1);
var custRendered = (Customer)results.ViewData.Model;
Assert.AreEqual(2, custRendered.CustomerId);
Assert.AreEqual("test", custRendered.FirstName);
而且控制器
public ViewResult Edit(int id)
{
Customer customer = customerRepository.GetCustomerByID(id);
return View(customer); //this just returns null??
}
我想我是非常愚蠢的,但任何帮助,将超级赞赏。
完美的感谢。 – hoakey 2010-11-29 16:04:45