【问题标题】:Testing an app with sessions使用会话测试应用程序
【发布时间】:2013-01-11 13:00:45
【问题描述】:

我正在使用即将推出的 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 会创建一个新请求,因此会话不会被传播。

会话在测试中可用。但是当您使用 $this->client->request('GET', 'something') 时,该请求的会话不再存在,因为它使用了数组驱动程序。我可以尝试使用文件驱动程序,但我将如何向请求发送自定义会话 ID?

我该如何解决这个问题?我可以通过假 cookie 传递会话 ID 吗?或者以某种方式传递会话对象?

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    使用$this->be($user) 而不是Auth::login。在此处查看早期的 L4 文档:https://github.com/laravel/docs/blob/master/testing.md

    【讨论】:

    • 我没有使用 Auth 包。如果我想要的不是 Auth 包中包含的东西怎么办?
    • $this->be 有第二个参数来指定使用哪个 Auth 驱动程序。
    • 再一次,我没有使用 Auth 包。完全没有。我想在我的测试环境中进行一般会话访问。
    • 嗯,那就试试$this->app['session']看看组件是不是绑定的,但我不确定。
    • $this->app['session'] 已绑定,但似乎会话未自动启动。我不太确定发生了什么。
    猜你喜欢
    • 2011-05-23
    • 2011-07-26
    • 2013-11-06
    • 2017-06-22
    • 1970-01-01
    • 2017-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多