Почему ExpectConstructor () не вызывает этот тест? - PullRequest
1 голос
/ 01 апреля 2009

Я немного сбит с толку относительно назначения метода 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?!
}

Заранее спасибо за помощь.

1 Ответ

2 голосов
/ 01 апреля 2009

Это было сообщено как ошибка в 2006 . Возможно, это должно было быть исправлено (хорошо, реализовано - очевидно, это не было ошибкой, это была просто невыполненная функция ...), но если это все еще проблема сейчас, я думаю, что они не обошли это стороной :(

...