我对TypeMock 3.5中ExpectConstructor()
类的Mock
方法的目的感到有些困惑。
我原以为如果没有调用构造函数,调用ExpectConstructor
会导致MockManager
失败Verify()
,即如果没有实例化模拟类型的实例。< / p>
但是,调用ExpectConstructor()
而不指定该构造函数的任何参数似乎不会设置该期望 - 因此我的测试无论如何都会通过。
我的问题:我错过了什么或误解了什么?如果ExpectConstructor()
不是用于验证构造函数调用,那么它的用途是什么?
考虑这三个说明问题的NUnit测试:
[Test]
public void exampleTest1()
{
MockManager.Init();
Mock fooMock = MockManager.Mock(typeof(Foo));
fooMock.ExpectConstructor().Args(10);
Foo f = new Foo(10); // Constructor called
MockManager.Verify();
// This test passes, as expected...so far so good
}
[Test]
public void exampleTest2()
{
MockManager.Init();
Mock fooMock = MockManager.Mock(typeof(Foo));
fooMock.ExpectConstructor();
Foo f = new Foo(); // Constructor called
MockManager.Verify();
// This test passes...also as expected
}
[Test]
public void exampleTest3()
{
MockManager.Init();
Mock fooMock = MockManager.Mock(typeof(Foo));
fooMock.ExpectConstructor();
// nb. not instantiating an instance of Foo
MockManager.Verify();
// This test passes - why?!
}
提前感谢您的帮助。
答案 0 :(得分:2)
这被报告为错误back in 2006。据说它将被修复(好吧,实施 - 显然它不是一个bug,它只是一个未实现的功能......)但如果现在仍然是一个问题,我猜他们没有得到它:(