Test case for Drupal unit tests.
These tests can not access the database nor files. Calling any Drupal function that needs the database will throw exceptions. These include watchdog(), module_implements(), module_invoke_all() etc.
| Name | Description |
|---|---|
| DrupalTestCase::$assertions | Assertions thrown in that test case. |
| DrupalTestCase::$databasePrefix | The database prefix of this test run. |
| DrupalTestCase::$originalFileDirectory | The original file directory, before it was changed for testing purposes. |
| DrupalTestCase::$results | Current results of this test case. |
| DrupalTestCase::$skipClasses | This class is skipped when looking for the source of an assertion. |
| DrupalTestCase::$testId | The test run ID. |
| DrupalTestCase::$timeLimit | Time limit for the test. |
| Name | Description |
|---|---|
| DrupalTestCase::assert | Internal helper: stores the assert. |
| DrupalTestCase::assertEqual | Check to see if two values are equal. |
| DrupalTestCase::assertFalse | Check to see if a value is false (an empty string, 0, NULL, or FALSE). |
| DrupalTestCase::assertIdentical | Check to see if two values are identical. |
| DrupalTestCase::assertNotEqual | Check to see if two values are not equal. |
| DrupalTestCase::assertNotIdentical | Check to see if two values are not identical. |
| DrupalTestCase::assertNotNull | Check to see if a value is not NULL. |
| DrupalTestCase::assertNull | Check to see if a value is NULL. |
| DrupalTestCase::assertTrue | Check to see if a value is not false (not an empty string, 0, NULL, or FALSE). |
| DrupalTestCase::deleteAssert | Delete an assertion record by message ID. |
| DrupalTestCase::error | Fire an error assertion. |
| DrupalTestCase::errorHandler | Handle errors during test runs. |
| DrupalTestCase::exceptionHandler | Handle exceptions. |
| DrupalTestCase::fail | Fire an assertion that is always negative. |
| DrupalTestCase::generatePermutations | Converts a list of possible parameters into a stack of permutations. |
| DrupalTestCase::getAssertionCall | Cycles through backtrace until the first non-assertion method is found. |
| DrupalTestCase::insertAssert | Store an assertion from outside the testing context. |
| DrupalTestCase::pass | Fire an assertion that is always positive. |
| DrupalTestCase::randomName | Generates a random string containing letters and numbers. |
| DrupalTestCase::randomString | Generates a random string of ASCII characters of codes 32 to 126. |
| DrupalTestCase::run | Run all tests in this class. |
| DrupalTestCase::verbose | Logs verbose message in a text file. |
| DrupalUnitTestCase::setUp | Sets up unit test environment. |
| DrupalUnitTestCase::tearDown | |
| DrupalUnitTestCase::__construct | Constructor for DrupalUnitTestCase. Overrides DrupalTestCase::__construct |
drupal/
<?php
class DrupalUnitTestCase extends DrupalTestCase {
/**
* Constructor for DrupalUnitTestCase.
*/
function __construct($test_id = NULL) {
parent::__construct($test_id);
$this->skipClasses[__CLASS__] = TRUE;
}
/**
* Sets up unit test environment.
*
* Unlike DrupalWebTestCase::setUp(), DrupalUnitTestCase::setUp() does not
* install modules because tests are performed without accessing the database.
* Any required files must be explicitly included by the child class setUp()
* method.
*/
protected function setUp() {
global $conf;
// Store necessary current values before switching to the test environment.
$this->originalFileDirectory = variable_get('file_public_path', conf_path() . '/files');
// Reset all statics so that test is performed with a clean environment.
drupal_static_reset();
// Generate temporary prefixed database to ensure that tests have a clean starting point.
$this->databasePrefix = Database::getConnection()->prefixTables('{simpletest' . mt_rand(1000, 1000000) . '}');
// Create test directory.
$public_files_directory = $this->originalFileDirectory . '/simpletest/' . substr($this->databasePrefix, 10);
file_prepare_directory($public_files_directory, FILE_CREATE_DIRECTORY | FILE_MODIFY_PERMISSIONS);
$conf['file_public_path'] = $public_files_directory;
// Clone the current connection and replace the current prefix.
$connection_info = Database::getConnectionInfo('default');
Database::renameConnection('default', 'simpletest_original_default');
foreach ($connection_info as $target => $value) {
$connection_info[$target]['prefix'] = array(
'default' => $value['prefix']['default'] . $this->databasePrefix,
);
}
Database::addConnectionInfo('default', 'default', $connection_info['default']);
// Set user agent to be consistent with web test case.
$_SERVER['HTTP_USER_AGENT'] = $this->databasePrefix;
// If locale is enabled then t() will try to access the database and
// subsequently will fail as the database is not accessible.
$module_list = module_list();
if (isset($module_list['locale'])) {
$this->originalModuleList = $module_list;
unset($module_list['locale']);
module_list(TRUE, FALSE, FALSE, $module_list);
}
}
protected function tearDown() {
global $conf;
// Get back to the original connection.
Database::removeConnection('default');
Database::renameConnection('simpletest_original_default', 'default');
$conf['file_public_path'] = $this->originalFileDirectory;
// Restore modules if necessary.
if (isset($this->originalModuleList)) {
module_list(TRUE, FALSE, FALSE, $this->originalModuleList);
}
}
}
?>