Dal*_*ala 7 c# tdd unit-testing rhino-mocks moq
我认为当一个方法没有结果来避免代码中的空检查时,总是返回空列表或数组而不是null是一个好习惯.
因为Rhino Mocks返回一个对象的默认值,对于列表和数组是null,所以很多时候我必须重新添加null检查或设置具有期望返回列表的模拟.
有没有办法用这种行为配置或扩展Rhino Mocks?
var repositoryMock = MockRepository.GenerateMock<ICustomerRepository>();
IList<Customer> customers = repositoryMock.getCustomers();
Assert.IsNotNull(customers);
Assert.AreEqual(0, customers.Count );
Run Code Online (Sandbox Code Playgroud)
事实证明,只要返回的对象是 IEnumerable,Moq就可以实现这种行为。以下测试通过:
[Test]
public void EmptylListTest()
{
var repositoryMock = new Mock<ICustomerRepository>();
IEnumerable<Customer> customers = repositoryMock.Object.GetCustomers();
Assert.IsNotNull(customers);
Assert.AreEqual(0, customers.Count());
}
[Test]
public void EmptyArrayTest()
{
var repositoryMock = new Mock<ICustomerRepository>();
Customer[] customerArray = repositoryMock.Object.GetCustomerArray();
Assert.IsNotNull(customerArray);
Assert.AreEqual(0, customerArray.Length);
}
public interface ICustomerRepository
{
IEnumerable<Customer> GetCustomers();
Customer[] GetCustomerArray();
}
Run Code Online (Sandbox Code Playgroud)