ali*_*ce7 8 c# testing unit-testing rhino-mocks
我正在使用rhino mocks 3.5并且我试图在我的期望中抛出异常来测试我的catch块中的一些功能.
但由于某种原因,它并没有抛出异常.
_xyz.stub(x => x.function(string)).throw(new exception("test string"));
Run Code Online (Sandbox Code Playgroud)
所以,我正在调用函数来抛出异常,但它没有抛出异常.
Vad*_*dim 14
我不确定为什么它不适合你.我创建了一个小样本,它对我来说很好.看看这段代码:
首先,我创建了我想要测试的代码.
public interface IXyz
{
void Foo();
}
public class Xyz : IXyz
{
public void Foo()
{
}
}
public class Sut
{
public void Bar(IXyz xyz)
{
xyz.Foo();
}
}
Run Code Online (Sandbox Code Playgroud)
接下来我将创建一个测试方法.在这种情况下,我使用的是MbUnit,但它应该适用于任何单元测试框架.
[Test]
[ExpectedException(typeof(ArgumentException), Message = "test string")]
public void BarFoo_Exception()
{
IXyz xyzStub = MockRepository.GenerateStub<IXyz>();
xyzStub.Stub(x => x.Foo()).Throw(new ArgumentException("test string"));
new Sut().Bar(xyzStub);
}
Run Code Online (Sandbox Code Playgroud)
我希望这有帮助.
看来如果要抛出异常的方法有参数,那么你需要在.IgnoreArguments()
之前添加.Throw(new Exception())
.
例如,我发现以下内容不会抛出异常:
queue.Stub(x => x.Send(messageQueueTransaction, auditEvent)).Throw(new Exception());
Run Code Online (Sandbox Code Playgroud)
但以下是:
queue.Stub(x => x.Send(messageQueueTransaction, auditEvent)).IgnoreArguments().Throw(new Exception());
Run Code Online (Sandbox Code Playgroud)
因为Vadim的异常抛出方法是无参数的,所以它可以在不忽略参数的情况下工作.
归档时间: |
|
查看次数: |
13181 次 |
最近记录: |