繁体   English   中英

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

[英]Moq >= 4.5.7 exposes Exception on It.IsAny<decimal>()

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

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不是受支持的常量类型”。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM