如何从先前的测试中检索会话并将会话变量作为 url 路径的一部分注入

How to retrieve session from a previous test and inject session variables as a part of url path

我正在尝试使用 codeception 编写验收测试。

我进行了第一次验收测试,加载了一个包含产品比较的页面。

我用 $I->saveSessionSnapshot('Comparison');

保存会话快照

第二次测试,我想从这个页面继续比较。

在第二次测试的开头,我写道: $I->loadSessionSnapshot('Comparison');

但是,在那之后,我需要写: $I->amOnPage('/comparison/{userToken}');

用户令牌在会话中,在我想注入 url 的变量 userToken 中。

我该怎么做?

你不能那样做。

Session snapshot不是服务器端会话的快照,它是浏览器会话的快照,它实际上存储了所有cookie。

如果是功能测试,您可以实现一些方法来根据会话 ID 直接访问会话存储,但在验收测试中您无法直接访问服务器端代码或存储。

当 URL 中未指定时,最好修改您的应用程序代码以从会话中读取 userToken,然后您可以在测试中使用 $I->amOnPage('/comparison/');