1

Laravel 4 のパスワード リマインダーに関するいくつかのテストを作成しようとしています。

これが実行されるのを避けたい:

case Password::INVALID_USER:
    return Redirect::back()->with('error', Lang::get($response));

そして私は試しました:

Redirect::shouldReceive('back')->once();

そして、私はエラーが発生しています:

PHP 致命的なエラー: 非オブジェクトでメンバー関数 with() を呼び出す

呼び出しにパラメーターがある場合に嘲笑を適応させる方法を見つけましたが、この問題を回避する方法はわかりませんでした。

誰でも私を助けることができますか?

4

2 に答える 2

1

私は解決策を見つけましたが、誰かが知っていれば、嘲笑でそれを行う方法を知りたいです。

私がするときのエラー:

$this->call('POST', 'password-reminder', $data)

だった:

InvalidArgumentException: Cannot redirect to an empty URL.

そのため、嘲笑で Redirect::back 呼び出しを回避しようとしていましたが、これを行うことで回避できます。

$this->call('POST', 'password-reminder', $data, array(), array('HTTP_REFERER' => '/password-reminder'));

実際、HTTP_REFERER に記述した URL はテストには関係ありません。

検索: http://alexsears.com/article/testing-redirectback-laravel

于 2014-03-14T12:11:17.937 に答える
0

最初のテストは、1 回の小さな調整でうまくいくはずです。

 $fakeRedir = Mockery:mock('Illuminate\Http\RedirectResponse');
 Redirect::shouldReceive('back')->once()->andReturn($fakeRedir);

 //you could do additional assertions on your $fakeRedir here
 // $fakeRedir->shouldReceive('with')->once()->with(/* argument asserttions here*/);
 $result = $yourInstance->yourMethodUnderTest();
 $this->assertEquals($fakeRedir,$result);

正しく返されるようにリクエスト ファサードをモックしましたが、デフォルトでは、shouldReturn メソッドを使用して別の方法で指示されない限り、モックは null を返します。

于 2014-05-11T13:45:02.733 に答える