2011-08-26 44 views
3

我正在测试一些遗留代码,我们正在使用Moq 4进行隔离。有一个类在集合{}中具有验证属性。我需要它在调用我的一个测试时抛出一个异常,但我无法做到这一点。我试过以下内容:如何让一个属性在带有Moq模拟的设置上抛出异常?

fakeNetwork 
    .Setup(n => n.IpAddress) 
    .Throws(new SystemNotFoundException("1.1.1.1"); 

不会引发任何异常。

fakeNetwork 
    .SetupSet(n => n.IpAddress) 
    .Throws(new SystemNotFoundException("1.1.1.1"); 

此用法已过时。替换是.SetupSet(Action),但我不知道如何做出引发异常的操作。我们将警告视为错误,因此我不知道这是否会起作用,但由于无论如何我无法使用过时的版本,因此我没有尝试关闭此检查。

任何提示将非常有帮助!

回答

6

Moq docs

mock.SetupSet(foo => foo.Name = "foo").Throws<ArgumentException>(); 
+0

好适应,现在我觉得自己像个白痴。当然,这正是它。谢谢! – McMuttons

+2

不要觉得自己是白痴,因为这可能会帮助别人。我遇到了一个类似这样的问题,花了我很长时间才弄清楚。这真是让你失望的'小事'! –