Я немного сбит с толку относительно назначения метода ExpectConstructor()
в классе Mock
в TypeMock 3.5.
Я бы подумал, что вызов 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?!
}
Заранее спасибо за помощь.