因此,要了解有关单元测试和模拟的更多信息,我创建了以下简单的界面,我想在单元测试中进行模拟和测试:
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都被正确引用。它必须是一个超级简单的事情,但我只是无法弄明白。提前谢谢!
答案 0 :(得分:3)
我猜你遇到了编译错误。原因是您直接使用Mock<ICsvFile>
类型实例中的属性。相反,您应该使用file.Object.FileName
之类的内容。 Object
属性表示模拟的ICsvFile
实例。
修改您的代码如下。
Assert.AreEqual(FILENAME, file.Object.FileName);
Assert.AreEqual(FILESIZE, file.Object.GetFileSize);