2014-02-11 70 views
3

更新:3对象未设置为犀牛的对象的实例嘲笑

我试图模拟出一个类使用通过工作单位创建其他类的新实例的方法。当我尝试模拟方法返回固定数据时,getPage方法被调用时,我得到一个null而不是列表。

这里是我的代码

[TestFixture()] 
public class CustomerServiceTests 
{ 
    private ICustomerService service; 
    private IUnitOfWork mockUnitOfWork; 
    private IGenericRepository<Entities.Customer> repository; 

    private int customerId; 
    private int ContactId; 

    [SetUp()] 
    public void Setup() 
    { 
     customerId = 1; 
     ContactId = 1; 
    } 

    [Test()] 
    public void GetCustomers_should_return_three_results() 
    { 
     mockUnitOfWork = MockRepository.GenerateMock<IUnitOfWork>(); 
     repository = MockRepository.GenerateMock<IGenericRepository<Entities.Customer>>(); 

     List<Entities.Customer> customerList = new List<Entities.Customer> 
     { 
      new Entities.Customer { Id = 1, CompanyName = "test1", ContractorId = 1 }, 
      new Entities.Customer { Id = 2, CompanyName = "test2", ContractorId = 2 }, 
      new Entities.Customer { Id = 3, CompanyName = "test3", ContractorId = 1 }, 
      new Entities.Customer { Id = 4, CompanyName = "test4", ContractorId = 1 }, 
      new Entities.Customer { Id = 5, CompanyName = "test5", ContractorId = 4 } 
     }; 


     var IQueryableList = customerList.AsEnumerable();    
     mockUnitOfWork.Stub(uow => uow.CustomerRepository).Return(repository); 




     repository.Stub(repo => repo.GetPaged()).Return(new ContentList<Entities.Customer> { List = IQueryableList, Total = customerList.Count }); 

     service = new CustomerService(mockUnitOfWork); 

     var resultList = service.GetCustomers(new PageRequest {PageSize = 20, PageIndex = 1 }); 
     var total = resultList.Data.Total; 
     Assert.AreEqual(10, total); 
    } 

服务代码的一部分返回null,而不是提供的列表。

  customers = _service.CustomerRepository.GetPaged(filter, orderBy, pageRequest.PageSize, pageRequest.PageIndex, "CustomersContacts"); 
+0

更新代码中的服务是什么类型? –

+0

这就是customerService。它是我正在运行我的测试的方法。 –

+0

您可以添加更多代码来展示您如何创建customerService?我想我可能会知道这个问题。 –

回答

5

你建立一个存根GetPaged不带参数

GetPaged() 

但你打电话GetPaged与参数

GetPaged(filter, orderBy, pageRequest.PageSize, pageRequest.PageIndex, "CustomersContacts") 

尝试是这样的(你需要验证语法,确保它是正确的类型)

repository 
    .Stub(repo => repo.GetPaged(
     Arg<string>.Is.Anything, 
     Arg<string>.Is.Anything, 
     Arg<int>.Is.Anything, 
     Arg<int>.Is.Anything, 
     Arg<string>.Is.Anything)) 
    .Return(new ContentList<Entities.Customer> { List = IQueryableList, Total = customerList.Count });