我希望能够使用moq正确测试类初始化:
class ClassToTest
{
public ClassToTest()
{
Method1(@"C:\myfile.dat")
}
public virtual void Method1(string filename)
{
// mock this method
File.Create(filename);
}
}
我想我可以用
CallBase
属性创建类的可测试版本,然后使用
.Setup()
确保
Method1()
不执行任何代码。
但是,创建
Mock<ClassToTest>()
不调用构造函数,如果调用了,就太晚了
Setup()
!
如果这是不可能的,那么在确保构造函数行为正确的同时,解决问题的最佳方法是什么?
编辑:
为了更清楚地说明这一点,我在
方法1)
获取文件名并添加一些行为。我要编写的测试将是以下方面的工作版本:
[Test]
public void ClassToTest_ShouldCreateFileOnInitialisation()
{
Mock<ClassToTest> mockClass = new Mock<ClassToTest>() { CallBase = true };
mockClass.Setup(x => x.Method1(It.IsAny<string>());
mockClass.Verify(x => x.Method1(@"C:\myfile.dat"));
}