2009-03-31 6 views
1

TypeMock 3.5のMockクラスのExpectConstructor()メソッドの目的について少し混乱しています。ExpectConstructor()がこのテストを失敗させる原因は何ですか?

私は、コンストラクタが呼び出されない場合ExpectConstructorを呼び出すと、MockManagerVerify()時に失敗する原因だろうと思っているだろう、すなわち嘲笑タイプのインスタンスがインスタンス化されていない場合。

しかし、そのコンストラクタへの引数を指定しないでExpectConstructor()を呼び出すと、その期待値が設定されていないように見えます。

私の質問:何かが紛失していると思いますか? ExpectConstructor()がコンストラクタ呼び出しを検証するためのものでない場合、それは何ですか?あなたの助けを事前に

[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?! 
} 

ありがとう:

は、これらの問題を説明する3つのNUnitのテストを考えてみましょう。

答えて

2

これはバグback in 2006として報告されました。おそらくそれは修正されようとしていた(うまく実装された - 明らかにバグではなく、実装されていないフィーチャだった...)しかし、今でも問題が残っていれば、

関連する問題