如何使用Moq模拟使属性在set上抛出异常?

时间:2011-08-26 08:42:19

标签: c# unit-testing mocking moq

我正在努力获得一些遗留代码,我们正在使用Moq 4进行隔离。有一个类在set {}组件中有一个带有验证的属性。我需要它在调用我的一个测试时抛出一个异常,但我无法做到这一点。我尝试了以下内容:

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),但我不确定如何进行抛出异常的操作。我们将警告视为错误,因此我不知道这是否会起作用,但由于无论如何我都无法使用过时的版本,所以我没有试图关闭它。

任何提示都会非常有用!

1 个答案:

答案 0 :(得分:6)

改编自Moq docs

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