Moq&gt; = 4.5.7暴露It.IsAny <decimal>()的异常

时间:2016-05-27 21:32:12

标签: c# unit-testing moq

我使用的是Moq 4.5.3。并决定将Moq Nuget软件包更新到最新版本,即4.5.8。
突然,我的很多测试开始失败。问题是在可选参数上使用It.IsAny<decimal>时.Bellow是一个简单,愚蠢的测试来证明它:

public interface IFoo { bool Method(decimal decimalArg = 0m); }

public class Some
{
    public int SomeMethod(IFoo foo) => foo.Method(10m) ? 1 : 0;
}

[TestFixture]
public class SomeTests
{
    [Test]
    public void SampleTest()
    {
        var fooMock = new Mock<IFoo>();
        fooMock.Setup(m => m.Method(It.IsAny<decimal>())).Returns(true);

        var sut = new Some();
        var actual = sut.SomeMethod(fooMock.Object);

        Assert.That(actual, Is.EqualTo(1));
    }
}

我正在使用.Net 4.6.1,nUnit 3.2.1。 返回的异常是:“system.decimal不是支持的常量类型”。

  • 是否有人对此问题有解释?
  • 是否有任何修复或解决方法?

1 个答案:

答案 0 :(得分:0)

参见this Castle.Core讨论。删除默认值将解决此特定测试中的问题,但可能不会在所有测试中解决。