代码之家  ›  专栏  ›  技术社区  ›  BenAlabaster

MOQ 4.0:'的类型初始值设定项最低起订量`1'引发异常

  •  6
  • BenAlabaster  · 技术社区  · 14 年前

    我得到了例外

    '的类型初始值设定项最低起订量`1英尺

    使用moq4.0,我在几个论坛上查过了,他们提到使用moqnocastle版本。我试过这个和Moq文件夹中的版本。结果都一样。

    using System;
    
    namespace Prototype
    {
        public interface IMyInterface
        {
            int Value { get; set; }
            void ProcessValue();
            int GetValue();
        }
    }
    

    我的测试项目有一个用于虚拟测试的文件-测试程序.cs

    using System;
    using NUnit.Framework;
    using Moq;
    
    namespace Prototype.UnitTests
    {
        [TestFixture]
        public class TestProgram
        {
            Mock<IMyInterface> mock;
    
            [TestFixtureSetUp]
            void TestSetup()
            {
                mock = new Mock<IMyInterface>();
                mock.Setup(x => x.GetValue()).Returns(2);
            }
    
            [Test]
            public void RunTest()
            {
                IMyInterface obj = mock.Object; /* This line fails */
                int val = obj.GetValue();
                Assert.True(val == 2);
            }
        }
    }
    

    根据文档,一切都是好的和适当的,它编译得很好。当我试着运行测试时,问题就出现了。它到达上面标记的行并崩溃,但以下情况除外:

    '的类型初始值设定项最低起订量`1英尺 引发了一个异常。

    3 回复  |  直到 14 年前
        1
  •  4
  •   Jeff Ogata    14 年前

    在进行以下更改后,我能够成功运行您的测试:

    1. 制造 TestSetup() 公众的
    2. RunTest int val = obj.Value int val = obj.GetValue() Assert 通过。

    Prototype.UnitTests.TestProgram.RunTest:
    Invalid signature for SetUp or TearDown method: TestSetup
    

    也许您使用的是一个旧版本的NUnit,它以不同的方式处理这种情况(我刚刚下载了2.5.7.10213)。

    高温

        2
  •  9
  •   Alfa Morales    8 年前

    当我更新城堡。核心NuGet包升级到版本4.0.0。一些更改了的内容此时不能与最新的Moq(v4.5.30)一起正常工作。

    我通过回到城堡。核心版本3.3.3

        3
  •  3
  •   Richard Moore    6 年前

    我对Moq也有一个类似的例外(它以前工作得很好)。

    对我来说,解决方案是使用NuGet卸载Moq和异常提到的程序集。然后使用NuGet重新安装Moq并应用随后出现的任何NuGet更新。

        4
  •  0
  •   Ruben Szekér    5 年前

    我的错误如下。

    信息:System.TypeInitializationException异常:的类型初始值设定项'最低起订量`1'引发了异常。

    在我的例子中,我不必删除Mock,在正确的版本中安装丢失的程序集。我不知道为什么现在这只是个问题。合并分支后发生问题,但两个分支都没有程序集,也没有显示此错误。不过,结局都好。