Behat和Mink:使用测试环境

31
我目前正在使用Mink和Goutte Driver 的 Behat。当我尝试通过来自Symfony2标准版的典型app_dev.php文件在我的开发环境中使用它时,我的测试运行得非常好(Gists)。
但是,如果我想使用一个app_test文件(与app_dev文件相同,只是将环境参数设置为“test”而不是“dev”,并禁用调试模式),在注销场景中,似乎Goutte找不到"user_signup"标识符,在“login”场景中,它找不到“Root”文本节点。实际上,当我使用print last response时,似乎用户没有登录:我仍然看到登录用户的表单...
当我在我的开发环境(app_dev)或生产环境(app)中时,一切似乎都工作得很好...有什么想法吗?

如果您认为需要其他文件,请告诉我。


一些新鲜的消息:似乎在“测试”环境下,不是像在生产和开发环境中那样包含会话ID的“PHPSESSID” cookie,而是一个“MOCKSESSID” cookie... 有什么想法可以更改cookie名称吗? - Talus
算了,我不认为这与会话cookie名称有关,因为我可以在浏览器中访问我的app_test,并且拥有这个cookie,一切都正常工作。问题是,似乎使用那个cookie和Goutte,在Goutte上我看到消息“您的会话已过期或您已禁用了cookie”,但我可以看到Goutte确实有cookie(我之前提到的MOCKSESSID),所以回到原点... - Talus
会话 ID cookie 的名称不匹配。请检查您的配置,确保会话 ID 名称再次与您的配置匹配。否则,每个请求都将模拟会话,并且您需要确保模拟的会话具有正确的登录状态,否则您将看到上述错误消息。 - hakre
问题是,我正在使用浏览器直接测试(在app_test.php上),并且我确实有MOCKSESSID cookie。一切都正常...但是当使用Behat + Mink (+ Goutte)时就不行了。因此,由于我在Mink中有这个cookie(我用getCookieJar()检查过),这意味着cookie已经被激活,看起来会话根本没有设置... - Talus
1个回答

1

那么为什么它与使用Mink完美配合的“prod”环境不同呢?但是,我会尽快尝试这个方法,并回复你。 - Talus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接