无法解析模拟对象的符号

时间:2014-06-27 07:13:13

标签: c# unit-testing nunit moq

因此,要了解有关单元测试和模拟的更多信息,我创建了以下简单的界面,我想在单元测试中进行模拟和测试:

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都被正确引用。它必须是一个超级简单的事情,但我只是无法弄明白。提前谢谢!

1 个答案:

答案 0 :(得分:3)

我猜你遇到了编译错误。原因是您直接使用Mock<ICsvFile>类型实例中的属性。相反,您应该使用file.Object.FileName之类的内容。 Object属性表示模拟的ICsvFile实例。

修改您的代码如下。

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