データモデルをテストするためのテストがあります:
<?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と言っている場合、理想的には、1 つのモデルに対して 1 つのテストケースのみを記述し、テストのアーキテクチャがそれを処理する場合、次のようなテストを実行できることを意味します。
php tests/run.php --group=MockedDbWithSqlite # fast way, prefered, default
php tests/run.php --group=RealDb # slower way, but with more precise results