5

Laravel 5.0 で単体テストを作成しており、リクエスト クラスで別のバッグを使用して検証エラー メッセージを表示しています。

私は自分のファイルでこれを使用しています:

/* ExampleRequest.php */
namespace App\Http\Requests;

use App\Http\Requests\Request;
use Illuminate\Support\Facades\Auth;

class ExampleRequest extends Request {

    protected $errorBag = 'otherbag';

    public function rules(){
        return [
            'my_field' => 'required'
        ];
    }
}

私のテストファイルでは、これを使用してテストしています:

/* ExampleTest.php */
class ExampleTest extends TestCase {
    public function testPostWithoutData(){
        $response = $this->call('POST', 'url/to/post',[
            'my_field' => ''
        ]);
        $this->assertSessionHasErrors('my_field');
    }
}

テストを実行すると、正しいアサートを取得できず、次の問題が返されます。

セッション欠落エラー:のmy_field アサートに失敗しfalseましたtrue

$errorBagリクエストファイルから属性を取り出せば問題ありません。

必要に応じて詳細をお知らせします。

4

2 に答える 2

2

次のように、セッション ストアから別のバッグを取得できます。

$myBag = $this->app('session_store')->getBag('otherBag');
$this->assertTrue($myBag->any());

ただし、Laravel はデフォルトで代替バッグを使用しないためApp\Request::$errorBag、セッション ハンドラーに登録するためにコード内で何かを行っていると想定しています。

于 2015-07-25T13:39:13.127 に答える