laravelでテストコードを書いてみた。
1, テストコードをartisanで自動生成。
1 |
php artisan make:test HelloTest |
tests/Feature/HelloTest.phpが生成される。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?php namespace Tests\Feature; use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Foundation\Testing\WithFaker; use Tests\TestCase; class HelloTest extends TestCase { /** * A basic feature test example. * * @return void */ public function testExample() { $response = $this->get('/'); $response->assertStatus(200); } } |
2, テストコードを実行してみる。vendorフォルダ以下を実行するのって初めてかも?
1 2 3 |
vendor/bin/phpunit tests/Feature/HelloTest.php OK (1 test, 1 assertion) |
3, テスト内容を増やしてみる。
1 2 3 4 5 |
public function testIndex() { $this->get('/') // トップページに ->assertSeeText('Hello'); // 文字列 Helloはあるか? } |
4, 実行すると当然エラーになる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
vendor/bin/phpunit tests/Feature/HelloTest.php PHPUnit 8.5.14 by Sebastian Bergmann and contributors. .F 2 / 2 (100%) Time: 462 ms, Memory: 18.00 MB There was 1 failure: 1) Tests\Feature\HelloTest::testIndex Failed asserting that '\n /home/ec2-user/environment/laravel/vendor/laravel/framework/src/Illuminate/Testing/TestResponse.php:434 /home/ec2-user/environment/laravel/tests/Feature/HelloTest.php:26 FAILURES! Tests: 2, Assertions: 2, Failures: 1. |
トップページを書き換えて、Helloという文字列を入れると、OKとなる。
う~ん、これ一項目ずつ書いてくと、大変な量になりそう…。