次は、データベースの結果を含むテストセットの例です。テストでデータベースと直接対話する必要がある場合は、エンティティマネージャをテストで使用できるようにすることができます。詳細については、this bit of documentationを参照してください。結果はWebページに表示され、DOMクローラによって読み取られることが多いことに注意してください。
public function setUp()
{
self::bootKernel();
$this->em = static::$kernel->getContainer()
->get('doctrine')
->getManager()
;
$this->tool = static::$kernel->getContainer()
->get('truckee.toolbox')
;
$classes = array(
'Truckee\VolunteerBundle\DataFixtures\SampleData\LoadFocusSkillData',
'Truckee\VolunteerBundle\DataFixtures\SampleData\LoadMinimumData',
'Truckee\VolunteerBundle\DataFixtures\SampleData\LoadStaffUserGlenshire',
'Truckee\VolunteerBundle\DataFixtures\SampleData\LoadStaffUserMelanzane',
'Truckee\VolunteerBundle\DataFixtures\SampleData\LoadOpportunity',
'Truckee\VolunteerBundle\DataFixtures\SampleData\LoadVolunteer',
);
$this->loadFixtures($classes);
$this->client = $this->createClient();
$this->client->followRedirects();
}
public function testOutboxUser()
{
$crawler = $this->login('admin');
$link = $crawler->selectLink("Send alerts to organizations")->link();
$crawler = $this->client->click($link);
$outboxObj = $this->em->getRepository('TruckeeVolunteerBundle:AdminOutbox')->findAll();
$outbox = $outboxObj[0];
$recipient = $outbox->getRecipientId();
$type = $this->tool->getTypeFromId($recipient);
$this->assertEquals('staff', $type);
}
関連:http://stackoverflow.com/questions/10784973/how-to-set-up-database-heavy-unit-tests-in-symfony2-using-phpunit – k0pernikus
私はその質問を見ましたが、残念ながら、それは、私が答えのいくつかの側面を見逃していない限り、フィクスチャを作成し、機能テスト後の結果を確認することではありません。 – Nairebis
灯具の作成だけではありません。それはあなたの出発点にすぎません。 DB側の機能テストをするには、その場でDBを作成し、テストを実行してからテストDBを破棄する必要があります。機能テストでは、DBに照会して値を確認することもできます。 私はあなたがDBのacutalコンテンツをテストする必要があるとは思っていませんが、特定のサービスがDBに書き込まれた後、リポジトリが正しいデータを返すかどうかは分かりません。 セットアップとティアダウンのプロセスは、テストケースごとに実行する必要があり、実行中のテストを長くすることができます。 – k0pernikus