【发布时间】:2009-03-31 22:41:02
【问题描述】:
我对 TypeMock 3.5 中 Mock 类上的 ExpectConstructor() 方法的用途有点困惑。
我原以为如果未调用构造函数(即未实例化模拟类型的实例),调用 ExpectConstructor 会导致 MockManager 在 Verify() 上失败。
但是,调用 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?!
}
提前感谢您的帮助。
【问题讨论】:
标签: c# unit-testing mocking nunit typemock