Laravel 4在控制器中进行测试

vio*_*ium 4 session phpunit laravel-4

我在Laravel 4中测试控制器时遇到问题.

我有下一个代码:

public function getRemind()
{
    $status = \Session::get('status');
    $error = \Session::get('error');
    $email = \Session::get('email');

    return \View::make('admin/reminds/remind_form', compact('status', 'error', 'email'));
}
Run Code Online (Sandbox Code Playgroud)

我想测试控制器在视图中传递的正确数据:

public function testGetRemind()
{
    \Session::set('status', 'status');
    \Session::set('error', 'error');
    \Session::set('email', 'email');
    $response = $this->action('GET', 'Admin\RemindersController@getRemind');
    $this->assertTrue($response->isOk(), 'Get remind action is not ok');
    $this->assertViewHas('status', 'status');
    $this->assertViewHas('error', 'error');
    $this->assertViewHas('email', 'email');
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用.

另外我不能模拟Session-class,因为框架不允许 - 当我尝试这样做时会有很多错误.

And*_*eas 10

Session::start()在测试开始时致电.在测试中调用URL时,如果尚未启动会话,则启动会话,擦除放入其中的任何现有数据.

从v4.1.23开始,你也可以这样做$this->session($arrayOfSessionData),它为你处理会话的开始.