0

本当に明らかな何かが欠けているようですが、これは私を夢中にさせます:

コードをテストするには、エンティティを定義済みの状態にする必要があります。そして、それは単に機能しません。たとえば、次のような変更は完全に無視されます。

    $this->test_character->setLocation(null);

    $crawler = $this->client->request('GET', '/en/character/start');
    $this->assertTrue($this->client->getResponse()->isSuccessful(), "start page failed to load");
    $this->assertGreaterThan(0, $crawler->filter('html:contains("Character Placement")')->count(), 'start page content failure');

このテストをデバッグすると、場所が実際には null に設定されていないため、失敗することが示されます。flush() を追加しても何も変わらないので、それは問題ではありません。私の最善の推測では、それはテストクライアントでのみ変更され、ページを生成するバックエンドでは変更されませんが、疑問が残ります.f ***は、エンティティをテストするために定義された状態にするにはどうすればよいですか?

4

1 に答える 1

1

テスト リクエストを処理するカーネルは、アプリの分離されたインスタンスです。リクエストを行う前に永続化してデータベースにフラッシュしない限り、おそらく test_character にロードしたエンティティにアクセスできません。

Fixtures の使用を検討しましたか? リクエスト/レスポンスをテストする準備ができているいくつかのエンティティを初期化するだけなら、それが正しい方法です。機能テスト内のエンティティを直接操作する必要はありません。

テスト データベースとテスト フィクスチャのセットアップを自動化するために、 Liip 機能テスト バンドルを調べることもできます。

于 2013-02-18T15:13:45.107 に答える