我有以下情况。
我使用RhinoMocks来模拟我的一项服务。存根的初始动作是增加一个呼叫计数,在随后的呼叫中我想抛出异常......我该怎么做?
这就是我现在所拥有的,我在TestFixtureSetup方法中设置了这个
var mockBLL = MockRepository.GenerateMock<IBLL>();
mockBLL.Stub(x => x.SaveOrUpdateDTO(null, null)).IgnoreArguments().WhenCalled
(invocation =>
{
nSaveOrUpdateCount++;
});
SimpleIoc.Default.Register<IBLL>(() => mockBLL);
在我的测试用例中,我的一个对象将从IoC中读取,然后调用&#34; SaveOrUpdateDTO&#34;方法。第一个测试用例检查计数是否正确,第二个测试用例将尝试捕获异常。
我的初期是创建另一个模拟,然后在第二个测试用例之前重新注册它,但我不认为这是最好的方法。
有关如何生成两个不同存根的任何想法,一个调用一个动作,另一个抛出异常?
答案 0 :(得分:2)
也许这会有所帮助,你能尝试一下吗?
var mockBLL = MockRepository.GenerateMock<IBLL>();
mockBLL.Stub(x => x.SaveOrUpdateDTO(null, null))
.IgnoreArguments()
.Repeat.Twice() // Allow to be called twice
.WhenCalled(invocation =>
{
if (nSaveOrUpdateCount > 0) // throw an exception if 2nd invocation
throw new Exception();
nSaveOrUpdateCount++;
});
SimpleIoc.Default.Register<IBLL>(() => mockBLL);