前提・実現したいこと
タイトルの通り、controllerからbladeに渡されている値をテストしたいです。
発生している問題・エラーメッセージ
Invalid JSON was returned from the route.
該当のソースコード
controller
php
1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Http\Request; 6 7class HomeController extends Controller 8{ 9 /** 10 * Create a new controller instance. 11 * 12 * @return void 13 */ 14 public function __construct() 15 { 16 $this->middleware('auth'); 17 } 18 19 /** 20 * Show the application dashboard. 21 * 22 * @return \Illuminate\Http\Response 23 */ 24 public function index() 25 { 26 return view('home', [ 27 'test' => 'aaa' // ←ここでbladeに渡しているデータをテストしたい 28 ]); 29 } 30} 31
テスト
php
1<?php 2 3namespace Tests\Feature; 4 5use Tests\TestCase; 6use Illuminate\Foundation\Testing\RefreshDatabase; 7use App\User; 8 9class ContactsControllerTest extends TestCase 10{ 11 // テストで入れたデータはテスト後に削除する 12 use RefreshDatabase; 13 14 protected $user; 15 16 public function setUp(): void 17 { 18 parent::setUp(); 19 20 // テストユーザ作成 21 $this->user = factory(User::class)->create(); 22 } 23 24 /** 25 * @test 26 */ 27 public function コントローラーから渡されている値を確認() 28 { 29 $response = $this->actingAs($this->user); 30 $response = $this->get('/home'); 31 $response->assertStatus(200) 32 ->assertJsonFragment([ 33 'test' => 'aaa' // ←assertJsonFragmentでは取得できず 34 ]); 35 } 36} 37
試したこと
1.$responseの内容確認
$responseをdumpで確認したところ
terminal
1#data: array:1 [ 2 "test" => "aaa" 3]
と返ってきたため、assertJsonFragmentで取得できるのではないかと考えましたが、できませんでした。
2.検索
私の検索方法が悪いと思うのですが
「phpunit コントローラー ビュー 変数」等で検索を行いましたが、
解決できそうな情報は見つかりませんでした。
3.公式リファレンスの確認
laravelのバージョンが5.5なので、下記を確認しましたが、解決しませんでした。
https://readouble.com/laravel/5.5/ja/
解決方法をご教示いただけますでしょうか。
よろしくお願いいたします。
あなたの回答
tips
プレビュー