我有一个测试数据模型的测试:
<?php
namespace Tests\Model\SQL;
/**
* @group Model_Users
* @group Model
*/
class UsersTest extends TestCase {
/** @var Users */
private $model;
public function setUp() {
parent::setUp();
$this->connection->execute( file_get_contents(
__DIR__ . '/fixtures/countries.sql' ) );
$this->model = new \Users(
$this->connection
);
}
public function testUserExists() {
$exists = $this->model->userExists( 'johndoe' );
$this->assertTrue( $exists );
}
}
使用SQLiteTests\Model\SQL\TestCase
作为数据库以尽可能快地保持测试。无论如何,正如您所料,SQLite 与Postgres不是同一个数据库,因此可能有一些特殊的数据库,它们在 SQLite 上会失败并在 PostgreSQL 上传递,反之亦然。
我的问题是:
如何有效地(在牢记 DRY 的情况下)设计架构以仅使用 SQLite 运行测试,然后仅使用 Postgres。
当我说DRY时,我的意思是理想情况下,当我只为一个模型编写一个测试用例并且我的测试架构会处理这个问题时,我将能够像这样运行测试:
php tests/run.php --group=MockedDbWithSqlite # fast way, prefered, default
php tests/run.php --group=RealDb # slower way, but with more precise results