Как мне работать с конструкциями в PHPUnit? - PullRequest
0 голосов
/ 30 мая 2010

Я новичок в PHPUnit и, просто копаясь в руководстве, я не могу найти достойного примера того, как создать полный тест из конца в конец, и поэтому у меня остались вопросы.

Одним из них является то, как я могу подготовить свою среду для правильного тестирования моего кода?

Я пытаюсь выяснить, как правильно передать различные значения конфигурации, необходимые как для методов настройки / разрыва теста, так и для конфигов для самого класса.

// How can I set these variables on testing start?
protected $_db = null;
protected $_config = null;

// So that this function runs properly?
public function setUp(){
    $this->_acl = new acl(
        $this->_db,    // The database connection for the class passed 
                       // from whatever test construct

        $this->_config // Config values passed in from construct
    );
}

// Can I just drop in a construct like this, and have it work properly?
// And if so, how can I set the construct call properly?
public function __construct(
    Zend_Db_Adapter_Abstract $db, $config = array(),
    $baselinedatabase = NULL, $databaseteardown = NULL
){
    $this->_db = $db;
    $this->_config = $config;
    $this->_baselinedatabase = $baselinedatabase;
    $this->_databaseteardown = $databaseteardown;
}

// Or is the wrong idea to be pursuing?

1 Ответ

1 голос
/ 30 мая 2010

Поскольку кажется, что вы работаете с Zend Framework, я могу сказать, как мы это сделали, но я не могу подтвердить, что это правильное решение. Но это работает:)

Все тесты находятся в отдельной папке тестов, в которой Test Suite определен как XML (поэтому вы запускаете его с помощью команды phpunit --configuration TestSuite.xml). На корневом уровне есть файл TestHelper, который вызывается каждым тестом и выполняет начальную загрузку, вызывая класс начальной загрузки приложения. В приложении. У начальной загрузки есть метод, и он выполняет большую часть начальной загрузки, но без фактической отправки запросов. Таким образом, после запуска такого метода у вас будет готовая к использованию среда (в которой все ваши Zend_Db, логи, модули и т. Д. Собраны и готовы к работе), которые могут использовать модульные тесты. Вызов в TestHelper происходит в самом начале каждого класса юнит-теста. Вот быстрый пример:

/**
 * Unit test for GeoAddressTable model
 * (skipped)
 */

// Call GeoAddressTableTest::main() if this source file is executed directly.
if (!defined('PHPUnit_MAIN_METHOD')) {
        define('PHPUnit_MAIN_METHOD', 'GeoAddressTableTest::main');
}

require_once 'PHPUnit/Framework.php';

require_once dirname(dirname(__FILE__)).'/GeoTestHelper.php';

Надеюсь, это поможет

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