PHPUnit cung cấp một API đẹp để xây dựng các đối tượng trong khi đơn giản nhất của Drupal thì không. Có một thư viện có sẵn để tích hợp PHPUnit với Drupal 7 .
Để thực thi các tập lệnh này, bạn cần kiểm tra kho lưu trữ chính này . Để thực hiện Kiểm tra đơn vị trong dòng lệnh, chỉ cần truy cập trang web Drupal (ví dụ. <DRUPAL_ROOT>/sites/default
) Và sử dụng dphastait.bash giống như bạn sẽ sử dụng lệnh phpunit.
Kịch bản bao gồm 3 tệp:
- dphastait.bash - đơn giản chỉ cần gọi drun-dphastait.php với một vài tham số phụ. Điều đó là cần thiết bởi vì PHP không có khả năng xử lý các liên kết tượng trưng một cách chính xác.
- drun-dphastait.php - về cơ bản giống như trình chạy phpunit ngược dòng, ngoại trừ việc nó xử lý tham số phụ.
- bootstrap.inc.php - làm cho một bootstrap Drupal rất giống với drush.
Nguồn: http://devblog.more-onion.com/content/wr-unit-tests-drupal-7
bootstrap.inc.php
<?php
$path = CWD;
$site_dir = NULL;
$dpl_dir = NULL;
while ($path != '/') {
if (file_exists($path . '/settings.php')) {
$site_dir = $path;
}
if (file_exists($path . '/index.php') && file_exists($path . '/includes/bootstrap.inc')) {
$dpl_dir = $path;
break;
}
$path = dirname($path);
}
if (!$dpl_dir) {
echo "No drupal directory found in or above current working directory. Aborting. \n";
exit(1);
}
if (!$site_dir) {
$site_dir = $dpl_dir . '/sites/default';
if (!file_exists($site_dir . '/settings.php')) {
echo "No configured site found. Aborting.\n";
exit(1);
}
}
$_SERVER['HTTP_HOST'] = basename($site_dir);
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
define('DRUPAL_ROOT', $dpl_dir);
set_include_path($dpl_dir . PATH_SEPARATOR . get_include_path());
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
dphpunit.bash
#!/bin/bash
# get dirname of the script
DIR="$(dirname $(readlink "$0"))"
# assume the boostrap script is stored in the same directory
php "$DIR/drun-phpunit.php" "$(pwd)" --bootstrap "$DIR/bootstrap.inc.php" "$@"
drun-phpunit.php
<?php
require_once 'PHP/CodeCoverage/Filter.php';
PHP_CodeCoverage_Filter::getInstance()->addFileToBlacklist(__FILE__, 'PHPUNIT');
if (extension_loaded('xdebug')) {
xdebug_disable();
}
if (strpos('/usr/bin/php', '@php_bin') === 0) {
set_include_path(dirname(__FILE__) . PATH_SEPARATOR . get_include_path());
}
require_once 'PHPUnit/Autoload.php';
define('PHPUnit_MAIN_METHOD', 'PHPUnit_TextUI_Command::main');
define('CWD', $_SERVER['argv'][1]);
unset($_SERVER['argv'][1]);
$command = new PHPUnit_TextUI_Command;
$command->run($_SERVER['argv']);
Có thêm một thư viện để tích hợp PHPUnit với Drupal 7: https://github.com/sebastianbergmann/phastait
Thông tin thêm về các tập lệnh này có thể được kiểm tra tại đây: http : // thomaslatt Morph.com/blog/USE-phastait-with-drupal-7