hoa*_*key 7 asp.net-mvc unit-testing moq repository
我对Moq完全不熟悉,到目前为止,我们刚刚完成了Pro asp.net框架中概述的示例.在书中,一些crud被放置在控制器中,例如通过id获取客户 - 可能是出于简洁的原因.我决定将这种类型的功能放在存储库中,只需在控制器中调用它,就像"customerRepository.GetCustomerByID(id);" 测试这样的东西的最佳方法是什么?我创建了以下单元测试,由于某种原因,它返回一个null Customer.
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);
Run Code Online (Sandbox Code Playgroud)
和控制器
public ViewResult Edit(int id)
{
Customer customer = customerRepository.GetCustomerByID(id);
return View(customer); //this just returns null??
}
Run Code Online (Sandbox Code Playgroud)
我想我很傻,但任何帮助都会受到更多的赞赏.
你需要设置你的模拟以期望调用GetCustomerById而不是Customers属性.像这样的东西:
mockRepos.Setup(x => x.GetCustomerById(1)).Returns(customer[0]);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2749 次 |
| 最近记录: |