Exception Rhino模拟命令回复,抛出异常问题
如果代码中出现异常,我将尝试实现一些重试逻辑。我已经编写了代码,现在我正试图让Rhino Mocks来模拟这个场景。代码的jist如下所示:Exception Rhino模拟命令回复,抛出异常问题,exception,mocking,rhino-mocks,Exception,Mocking,Rhino Mocks,如果代码中出现异常,我将尝试实现一些重试逻辑。我已经编写了代码,现在我正试图让Rhino Mocks来模拟这个场景。代码的jist如下所示: class Program { static void Main(string[] args) { MockRepository repo = new MockRepository(); IA provider = repo.CreateMock<IA>()
class Program
{
static void Main(string[] args)
{
MockRepository repo = new MockRepository();
IA provider = repo.CreateMock<IA>();
using (repo.Record())
{
SetupResult.For(provider.Execute(23))
.IgnoreArguments()
.Throw(new ApplicationException("Dummy exception"));
SetupResult.For(provider.Execute(23))
.IgnoreArguments()
.Return("result");
}
repo.ReplayAll();
B retryLogic = new B { Provider = provider };
retryLogic.RetryTestFunction();
repo.VerifyAll();
}
}
public interface IA
{
string Execute(int val);
}
public class B
{
public IA Provider { get; set; }
public void RetryTestFunction()
{
string result = null;
//simplified retry logic
try
{
result = Provider.Execute(23);
}
catch (Exception e)
{
result = Provider.Execute(23);
}
}
}
类程序
{
静态void Main(字符串[]参数)
{
MockRepository repo=新建MockRepository();
IA provider=repo.CreateMock();
使用(repo.Record())
{
SetupResult.For(provider.Execute(23))
.IgnoreArguments()
.Throw(新的ApplicationException(“伪异常”));
SetupResult.For(provider.Execute(23))
.IgnoreArguments()
.返回(“结果”);
}
repo.ReplayAll();
B retryLogic=newb{Provider=Provider};
retryLogic.RetryTestFunction();
回购协议验证全部();
}
}
公共接口
{
字符串执行(int-val);
}
公共B级
{
公共IA提供程序{get;set;}
public void RetryTestFunction()
{
字符串结果=null;
//简化的重试逻辑
尝试
{
结果=Provider.Execute(23);
}
捕获(例外e)
{
结果=Provider.Execute(23);
}
}
}
似乎每次都会抛出异常,而不是只抛出一次。我应该将设置更改为什么?您需要使用Expect.Call而不是SetupResult:
using (repo.Record())
{
Expect.Call(provider.Execute(23))
.IgnoreArguments()
.Throw(new ApplicationException("Dummy exception"));
Expect.Call(provider.Execute(23))
.IgnoreArguments()
.Return("result");
}
犀牛。Mocks维基说