これは何
Laravel の Blade テンプレートのパーツのみを単体テストする方法。
ページ全体のテストより依存関係の少ないパーツのみをテストしたい。
バージョン情報
php 7.4
laravel/framework 8.40.0
テスト例
Laravel の Testing の TestCase に view()
メソッドが生えていました。これは実装をみると TestView クラスを作って返してくれるようです。TestViewクラスは assertSee()
メソッドなど文字列チェックのメソッドが生えています。
use Illuminate\Foundation\Testing\TestCase
class ClosedPlanIndexTest extends TestCase
{
public function testIndex(
) {
$this->view('service.parts.hogehoge', [
'exampleDependencyFlag' => true,
])->assertSee(<div>テスト文字列</div>, false);
}
上記の通りHTMLタグも含めた文字列をチェック可能ですが、その場合にはassertSee()
の第2引数の escape 設定を false にする必要があります。これをしないとテスト対象の文字列は <div>
などの形式なのに <div>
と比較してしまうことになり、意図しないテスト結果になってしまいます。