【问题标题】:Can not resolve symbol of mocked object无法解析模拟对象的符号
【发布时间】:2014-06-27 15:59:08
【问题描述】:

为了了解更多关于单元测试和模拟的信息,我创建了以下简单的界面,我想在单元测试中模拟和测试:

namespace TestProjekt
{
    public interface ICsvFile
    {
        string FileName { get; }

        int GetFileSize();
    }
}

以及使用 NUnit 和 Moq 的测试

namespace NUnitTests
{
    using Moq;
    using NUnit.Framework;
    using TestProjekt;

    [TestFixture]
    public class UnitTests1
    {

        private const string FILENAME = "0030001744_14224429_valuereport_20140527000012_1104.csv";


        private const int FILESIZE = 155;

        [Test]
        public void ExampleTest()
        {
            var file = new Mock<ICsvFile>();
            file.Setup(m => m.GetFileSize()).Returns(FILESIZE);
            file.SetupGet(m => m.FileName).Returns(FILENAME);

            Assert.AreEqual(FILENAME, file.FileName);
            Assert.AreEqual(FILESIZE, file.GetFileSize);
        }
    }
}

我是根据Tutorial i found online and quite interesting 制作的。问题是,Visual Studio 无法解决模拟对象上的方法和属性或我 setup 的任何其他内容。

所有 dll 都被正确引用。这一定是一件超级简单的事情,但我就是想不通。提前致谢!

【问题讨论】:

  • 您的系统在测试什么?当您对依赖于模拟实体的类/模块进行单元测试(因此,孤立地)时,您通常希望使用模拟对象。

标签: c# unit-testing nunit moq


【解决方案1】:

我猜你遇到了编译错误。原因是您直接从 Mock&lt;ICsvFile&gt; 类型的实例中使用了属性。相反,您应该使用 file.Object.FileNameObject 属性表示 ICsvFile 的模拟实例。

修改你的代码如下。

Assert.AreEqual(FILENAME, file.Object.FileName);
Assert.AreEqual(FILESIZE, file.Object.GetFileSize);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-28
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    • 2017-01-28
    • 1970-01-01
    相关资源
    最近更新 更多