phpunit - повторное использование фиктивных объектов для нескольких наборов тестов - PullRequest
6 голосов
/ 19 мая 2011

Мне любопытно, как другие к этому подходят.Написание теста не так уж и плохо, но насмешливый вид немного отстой и режет мой поток.Можно ли иметь каталог 'fixtures' и сказать mock_db.php, например, только с этим объявлением mock?

Если пойти еще дальше, будет ли плохой практикой абстрагировать эти mock вfunction?

Т.е.:

 // function to include a db mock
   include_once 'test/fixtures/dbmock.php';

   $mockMYSQL = $dbmock('mysql', 'db1');
   $mockMSSQL = $dbmock('mssql', 'db2');

Просто интересно узнать, как другие опытные тестировщики справляются с этим.Я пишу сценарии для синхронизации 2 баз данных, поэтому этот пример может стать очень актуальным.

1 Ответ

3 голосов
/ 22 мая 2011

Я бы пошел с наследованием - создавал общие ложные объекты и возвращал их в защищенных методах get * в общем классе родительских тестов.

Или вы можете создать более чистый и автономный класс, который вы бы создали в своих тестовых пакетах, и позволить ему создавать ваши фиктивные объекты. Я бы предпочел этот способ, но у него есть один недостаток - вы, вероятно, не можете или не должны использовать метод getMock () PHPUnit_Framework_TestCase. Я рекомендую вам взглянуть на этот метод и попытаться использовать его логику в вашем автономном классе.

Включение глобальных функций не очень ООП, это довольно волшебно, что PHP позволяет, но вы должны избегать этого:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...