4
私はlaravel 5.2
プロジェクト用のテストを作成しようとしています。これは、残りのリソースコントローラのレジスタページをテストします。すべてのテストの正確な入力で手動でテストすると、すべて動作しますが、私がphpunit
でテストすると、エラーページにリダイレクトされ、ページのアサートに失敗します。ただし、エラーはアサーションのエラーをエラーページに表示せず、テストが失敗した理由を示しません。どのように私はこれを見ることができますか?Laravel unit testing completeエラーを表示します
テストケース:
class registerTest extends TestCase
{
use WithoutMiddleware;
public function testRegisterCompanyCorrectly()
{
$this->actAsAdmin();
$this->visit('/Companies/create')
->type('testCompany', 'CName')
->type('www.testCompany.com', 'CUrl')
->type('[email protected]', 'Mail')
->type('John Doe', 'Name')
->type('Keith Richards', 'Password')
->type('Keith Richards', 'CPassword')
->press('Registreren')
->seePageIs('/Companies/3')
;
}
private function actAsAdmin()
{
$user = User::find(1);
$this->actingAs($user);
}
}'
PHPUnitのエラー:エラーを調査する
There was 1 failure:
1) registerTest::testRegisterCompanyCorrectly
Did not land on expected page [http://localhost/Companies/3].
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'http://localhost/Companies/3'
+'http://localhost/Companies'
C:\Users\Stefan\Documents\producten\Applicatie\vendor\laravel\framework\src\Illuminate\Foundation\Testing\Concerns\InteractsWithPages.php:170
C:\Users\Stefan\Documents\producten\Applicatie\tests\registerTest.php:34
C:\xampp\php\pear\PHPUnit\TextUI\Command.php:176
C:\xampp\php\pear\PHPUnit\TextUI\Command.php:129
FAILURES!
Tests: 5, Assertions: 14, Failures: 1.
代わりに/ companies/3とland/on companiesに着陸する予定です。新しい会社を登録したときに、新しく作成されたリソースの実際のページに上陸することは確実ですか?もし私が間違っていれば私を訂正してください。しかし、ハードコーディングされた数値をseePageIsメソッドに渡すことは、おそらく新しく作成するリソースごとに変わるので、かなり奇妙に見えます。 –
基本的な登録エラー(間違った値など)がある場合、私のリソースコントローラが作成ページに戻ります。成功すると、新しい会社のページ(/ Companies/{id})に送られます。しかし、私はそれが/ Companies /にリダイレクトすることを発見したが、laravelにエラーが発生した場合はエラーメッセージが表示される。問題は、手動で再現することやエラーを表示することができなくても問題を見つけることができないことです。また、私は現在、データベースの移行とシードを使用してテストを準備していますが、これが機能すると、それをリファクタリングして、ハードコードされた値がないことを確認します。 – Stefan
私はphpunitに慣れていませんが、 - verboseや--debugを使ってそれを実行して、追加情報が得られるかどうかを調べることができます。 –