Zend Framework: как выполнить модульное тестирование в случае удаленных вызовов API - PullRequest
3 голосов
/ 16 августа 2011

Я пишу несколько интеграционных тестов для моего большого приложения Zend Framework, используя Zend_Test. Но я застрял, зная, как написать тесты для нескольких моих контроллеров, использующих пользовательский веб-API. Мне известно о Zend_Controller_Response_HttpTestCase, которое, как указывает руководство ZF, могло бы быть здесь полезным, но я нахожу документацию очень скудной.

Как я могу написать свои тесты, не заставляя их вызывать удаленный сервер? Лучшие практики? Если требуется Zend_Controller_Response_HttpTestCase, то как я могу его использовать? Вот типичный метод тестирования, в котором я хотел бы использовать его:

class FooControllerTest extends ControllerTestCase {

    public function testMyNiftyFooPage() {
        $this->dispatch('/foo'); // a page that calls a remote API

        $this->assertQueryContentContains('h1', 'Hello World');
        // other assertions, etc.
    }
}

1 Ответ

0 голосов
/ 16 августа 2011

Инкапсулируйте логику, которая обрабатывает удаленные вызовы в классе, ваши контроллеры принимают экземпляр этого (это называется внедрением зависимости) и mock это для тестов.

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

...