我正在用即将推出的Laravel 4框架构建一个应用程序。我想为它写单元测试。该应用程序使用会话。因此,我必须重新创建用户状态以正确地测试所有内容。
我想做一件事:
User::login($user); // updates the session
$crawler = $this->client->request('GET', 'http://myapp.dev/');
$this->assertTrue($this->client->getResponse()->isOk());
$this->assertCount(1, $crawler->filter("#logout-button"));
但是,$this->client->request
创建了一个新的请求,因此会话不会被传播。
会话在test中可用。但是,当您使用$this->client->request('GET', 'something')时,该请求的会话不再存在,因为它使用数组驱动程序。我可以尝试使用文件驱动程序,但是如何向请求发送自定义会话id呢?
我该如何解决这个问题?我可以通过假cookie传递会话id吗?或者以某种方式传递会话对象?
用$this->be($user)
代替Auth::login
。查看早期L4文档:https://github.com/laravel/docs/blob/master/testing.md