Đối với một dự án lớn, chúng tôi đang sử dụng quy trình phát triển dựa trên mã . Chúng tôi đang sử dụng một hồ sơ cài đặt tùy chỉnh để cài đặt và cấu hình các mô-đun đóng góp và tùy chỉnh được sử dụng trong dự án. Đảm bảo tính chính xác của hồ sơ này, chúng tôi cần kiểm tra nó như bất kỳ mô-đun nào khác.
Hiện tại, chúng tôi sử dụng một trường hợp thử nghiệm SimpleTest trông giống như thế này hoạt động tốt cho đến nay.
class FooTestCase extends DrupalWebTestCase {
protected $admin_user = null;
public function getInfo() {
return array(
'name' => 'Foo Profile',
'description' => 'Ensure that the Foo profile configure the site.',
'group' => 'Foo',
);
}
public function setUp() {
$this->profile = 'foo';
parent::setUp();
}
//Test methods ...
}
Trang web phải đa ngôn ngữ, vì vậy để cài đặt và kích hoạt tất cả ngôn ngữ cần thiết, tôi đã thêm một tác vụ hồ sơ tùy chỉnh bằng cách sử dụng hook_install_tasks
. Tác vụ hoạt động tốt khi được thực thi từ trình duyệt. Nhưng nó không được thực thi khi DrupalWebTestCase :: setUp` được chạy. Vì vậy, chúng tôi không thể kiểm tra hiệu ứng của nó để đảm bảo chúng không bị mất bất cứ điều gì việc tái cấu trúc hồ sơ của chúng tôi sẽ trải qua trong tương lai.
Vì cài đặt ngôn ngữ yêu cầu tải bản dịch, bản thân tác vụ sử dụng xử lý hàng loạt.
Tôi đang tìm kiếm cả một cách để thực hiện nhiệm vụ cụ thể này FooTestCase:setUp
và nói chung là để tất cả (các nhiệm vụ không tương tác) trong hồ sơ của tôi được thực thi.
Để tham khảo, đây là mã cho nhiệm vụ
function foo_install_tasks($install_state) {
return array(on
'foo_install_import_locales' => array(
'display_name' => 'Install additional languages',
'display' => TRUE,
'type' => 'batch',
'run' => INSTALL_TASK_RUN_IF_NOT_COMPLETED,
)
);
}
function foo_install_import_locales(&$install_state) {
include_once DRUPAL_ROOT . '/includes/locale.inc';
include_once DRUPAL_ROOT . '/includes/iso.inc';
$batch = array();
$predefined = _locale_get_predefined_list();
foreach (array('nl', 'de') as $install_locale) {
if (!isset($predefined[$install_locale])) {
// Drupal does not know about this language, so we prefill its values with
// our best guess. The user will be able to edit afterwards.
locale_add_language($install_locale, $install_locale, $install_locale, LANGUAGE_LTR, '', '', TRUE, FALSE);
}
else {
// A known predefined language, details will be filled in properly.
locale_add_language($install_locale, NULL, NULL, NULL, '', '', TRUE, FALSE);
}
// Collect files to import for this language.
$batch = array_merge($batch, locale_batch_by_language($install_locale, NULL));
}
if (!empty($batch)) {
// Remember components we cover in this batch set.
variable_set('foo_install_import_locales', $batch['#components']);
return $batch;
}
}