如何替换异常?

时间:2012-08-31 14:32:09

标签: .net unit-testing mocking nsubstitute

我想替换异常及其字段。

类似的东西:

var webExcetion = Substitute.For<WebException>();
webExcetion.Response.Returns(httpWebResponse);
substituteForHttp.GetResponse(Arg.Any<string>()).Returns(x => { throw webExcetion; });

此代码抛出NSubstitute的Castle.Proxies.ExceptionProxy或NSubstitute.Exceptions.CouldNotSetReturnException。

我该怎么做?

1 个答案:

答案 0 :(得分:4)

WebException类没有虚拟成员,因此NSubstitute不能对它做很多事情(它通过使用Castle DynamicProxy创建派生类型的实例,然后通过覆盖更改实例作为替代所有的虚拟成员。)

在这种情况下,使用真正的WebException

解决此问题应该没问题
WebException webException = 
    new WebException("test", null, webExceptionStatus, httpWebResponse);

这会根据需要将Response属性设置为httpWebResponse

希望这有帮助。