【问题标题】:Why doesn't ExpectConstructor() cause this test to fail?为什么 ExpectConstructor() 不会导致此测试失败?
【发布时间】:2009-03-31 22:41:02
【问题描述】:

我对 TypeMock 3.5 中 Mock 类上的 ExpectConstructor() 方法的用途有点困惑。

我原以为如果未调用构造函数(即未实例化模拟类型的实例),调用 ExpectConstructor 会导致 MockManagerVerify() 上失败。

但是,调用 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


    【解决方案1】:

    这被报告为错误back in 2006。据说它将被修复(嗯,已实现 - 显然它不是一个错误,它只是一个未实现的功能......)但如果它现在仍然是一个问题,我想他们没有解决它:(

    【讨论】:

      猜你喜欢
      • 2012-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-23
      • 1970-01-01
      • 1970-01-01
      • 2011-04-04
      相关资源
      最近更新 更多