前提・実現したいこと
laravelで非同期通信を主にしたWebアプリを作成しています。
PHPUnitでコントローラクラスのテスト作成で少々嵌っております。
GuzzleClientというHTTPライブラリを使用してURLを呼び出しています。
テストメソッドでは大まかに以下のような処理をしています。
public function testテストメソッド(){ ・・・ テストで必要なデータをテーブルへINSERT GuzzleClientでURL呼び出し ← コントローラのメソッド実行される response受け取り 受け取った返却値のアサーション ・・・ }
上記で、
テストで必要なデータをテーブルへINSERT
したはずが、コントローラのメソッド実行時には該当データが
テーブルに入っていません。
発生している問題・エラーメッセージ
具体的なコードで書くと以下です。
public function testテストメソッド(){ モデル::insert(['カラム1' => '値1', 'カラム2' => '値2', 'カラム3' => '値3']); $clientGuzzle = new GuzzleClient(); $response = $clientGuzzle->get('/呼び出すURL', [ 'query' => [ 'param1' => 'パラメータ1', 'param2' => 'パラメータ2', ], 'headers' => [ 'X-Requested-With' => 'XMLHttpRequest', ] ]); responseデータのアサーション }
呼び出すURLのコントローラメソッド内で、
事前にINSERTしたモデルのデータを使いたいのですが、
INSERTされていないため、データが使えずエラーが発生します。
setUp()にデータINSERT処理を書いてみたりもしましたが、
だめでした。
どのように書くのが正しいのでしょうか。
言語/フレームワーク
PHP/laravel5.5
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。