【发布时间】:2013-02-03 19:59:55
【问题描述】:
我在尝试运行测试时收到以下错误。我试过 IgnoreArguments() ,但这似乎没有奏效。只有当我尝试 mock.Ordered() 时才会抛出此异常,如果我这样做 mock.Record() 然后它就会通过。
System.InvalidOperationException:以前的方法 'IProductRepository.GetAllProducts();'需要返回值或 抛出异常。
[Test]
public void TestwithOrderedRecordsandPlayBack()
{
var mock = new MockRepository();
var productRepository = mock.StrictMock<IProductRepository>();
var product = new Grains
{
Name = "Wonder Bread",
Category = "Grains"
};
IList list = new ArrayList();
//Class under test
var service = new ProductService(productRepository);
using (mock.Ordered())
{
Expect.Call(productRepository
.GetAllProducts())
.IgnoreArguments()
.Return(new ArrayList());
Expect.Call(()=>productRepository.SaveProduct(product));
}
using (mock.Playback())
{
list = service.GetAllProducts();
service.SaveProduct(product);
}
}
服务调用:
public virtual IList GetAllProducts()
{
IList list = _productRepository.GetAllProducts();
return list;
//throw new System.Exception("Not implemented");
}
public virtual IList GetAllProducts()
{
IList list = _productRepository.GetAllProducts();
return list;
//throw new System.Exception("Not implemented");
}
【问题讨论】:
-
那么您的服务调用是什么样的?它是真的如此薄的一层,它只是将请求逐字传递到您的存储库吗?
-
重要的不是你可以拥有什么——而是你的代码有什么?
-
@JonSkeet,我把它放在上面的编辑中。
-
现在您已经显示了 一个 服务调用,但是您在测试中进行了两个...
-
@JonSkeet,现在添加了另一个服务调用。
标签: c# unit-testing tdd rhino-mocks