phpUnit и модели, которые наследуют ADODB_Active_Record, заглушая ADODB_mysql - PullRequest
0 голосов
/ 07 июля 2011

Я искал все выше и ниже и, что удивительно, не могу найти ответ.

Когда я пытаюсь выполнить модульное тестирование моих моделей с помощью phpUnit, как я могу заглушить базу данных?

Яиспользуя PHP-фреймворк CMS, который имеет ряд классов, которые наследуются от класса («Model»), который наследуется от ADODB_Active_Record.Конструктор модели захватывает объект db (из ADOConnection) и передает его конструктору Active_Record.

Возможно, это не лучшая практика, но для того, чтобы как можно меньше изменить код, я подумываю о настройке grabDBObject () вернуть объект-заглушку во время тестирования.Эта заглушка передается в ADODB_Active_Record, и, теоретически, я могу проверить свои модели.

Однако я не могу понять, как создать заглушку.ADODB_Connection не просто.Это не будет вопросом замены Execute ().Есть куча других функций, таких как qstr (), о которых мне придется побеспокоиться и переписать по мере необходимости.

Что удивительно, я не могу найти никаких обсуждений людей, занимающихся этим.Это должно быть общей проблемой.Я иду в неправильном направлении?Я понимаю, что могу использовать что-то вроде dbUnit для фактического выполнения запросов к базе данных, а не заглушки ADODB_connection, но я также понимаю, что мне следует как можно больше заглушки, и что плохо полагаться на базу данных для модульных тестов методов модели.1011 *

Итак, 1. Должен ли я заглушить соединение БД для модульного тестирования?2. Как?

1 Ответ

0 голосов
/ 25 июля 2011

Вы пробовали метод phMunit getMock ()?

Позволяет предоставить поддельный объект для тестирования, не затрагивая рабочий код.

Но в этом случае вы сами должны получить ожидаемый результат.

Документ здесь:

http://www.phpunit.de/manual/3.0/en/mock-objects.html

...