2016-05-17 6 views
1

Laravel 5はどのような順序でテストケースを1つのクラスに呼び出すのですか?Laravel 5ユニットテストコールメソッド注文

彼らは上から下に呼ばれますか?アルファベット順ですか?注文を指定することはできますか? (その順序を削除) は、DELETE、 POST(オーダーを作成する)、(新規オーダーを作成したことを読んで) GET:

意味では、私はから始まるAPI呼び出しをテストしたいです。私はそれを3つの別々の自動テストとして行うことはできますが、それらが特定の順序で常に実行されるかどうかはわかりません。

+0

このhttps://phpunit.de/manual/current/en/writing-tests-for-phpunit.html#writing-tests-for-phpunit.test-dependenciesを見てください。正確には管理していませんテストの順番ですが、テストで別のテストで使用するデータを返すことができます – Dale

答えて

2

次のようなものがない代わりに、テストのために中継しないでください。

  1. は、POSTリクエストを作成し、ポストが作成されたと主張しています。
  2. 注文を手作業で作成し、GETリクエストを行い、注文がアサートされたことを確認します。
  3. 注文を手動で作成し、DELETEリクエストを作成し、注文が削除されたと主張します。

データはテスト間で持続しないでください。Illuminate\Foundation\Testing\DatabaseTransactionsまたはIlluminate\Foundation\Testing\DatabaseMigrationsを使用してください。あなたが次々テスト実行を確保するために@dependsアノテーションを使用することができますが、@scrubmxが指摘したように、あなたのテストは実行の順序に中継してはならないhttps://laravel.com/docs/5.2/testing#resetting-the-database-after-each-test

+0

私はすでにこのようなことをしています: 'public function testOrder(){$ clientOrderId = $ this-> order(); $ this-> assertInternalType( 'string'、$ clientOrderId); $ this-> assertNotEmpty($ clientOrderId); $ this-> OrderStatus($ clientOrderId); $ this-> DeleteOrder($ clientOrderId); } 'しかし、私は新しいテストをせずに、それらをseperatelで走らせることができるのを望みます。 – Peon

1

は、詳細情報を参照してください。そうでなければ、createOrderテストが失敗した場合、残りのテストは実行されません。また、テストするデータのバリエーションが増えるため、データが別のテストケースによって暗黙的に作成され、それを操作するテストケースに明示的に作成されなければ、テストスイートを増やすことは難しくなります。