2017-02-24 4 views
0

私はいくつかのレポートをテストする必要があります。複雑なデータ構造と多くのデータがレポートに影響しますので、この目的でフィクスチャを作成するのは非常に面倒な作業です。私は、レポートをテストするために既存のデータベース(実際にはそれのコピー)を使用したいと思います。Cakephp 3テスト:データベースからレコードをロードするには?

これをcakephp 3テストでどのように達成できますか? cakephp 3のデータベースからフィクスチャ(テーブルの構造ではない)のレコードを読み込むことはできますか?

答えて

2

あなたは焼くユーティリティ使用して、テーブル内の既存のレコードから備品を作成することができます。たとえば

--records, -r  Generate a fixture with records from the non-test 
        database. Used with --count and --conditions to limit 
        which records are added to the fixture. 
--count, -n  When using generated data, the number of records to 
        include in the fixture(s). (default: 
        1) 

を:

cake bake fixture you_table_name -r -c 100

+0

ありがとうございますが、データベースを直接フィクスチャーなしで使用するソリューションはありますか?私は "実際の"データベースをダンプし、この目的のために別のデータベース(テストレポート)を作成しましたが、たくさんのレコード(数千)があるので、これらのレコードからフィクスチャを生成するのは良い考えではないと思います。 – Teimuraz

0

PHPUnitのは、そのデータベースからすべてを削除しますので、それはそれぞれのテストの間にアクセスすることができます、あなたはおそらくあなたの本番データベースへのアクセスを与えたくありません。

あなたが探している解決策は、おそらく、プロダクトデータベースから取得するデータから$recordsプロパティを構築するために各フィクスチャのinit()関数を記述していることでしょう。結果をキャッシュすることを緩和するでしょうが、これは本当に、あなたのテストを遅くすること

public function init() 
{ 
    $thingsTable = TableRegistry::get('Things'); 
    $this->records = $thingsTable->find()->toArray(); 
    parent::init(); 
} 

注:この(未確認)のような

関連する問題