【问题标题】:Behat & Mink : Use the test environmentBehat & Mink : 使用测试环境
【发布时间】:2012-10-12 06:26:56
【问题描述】:

我目前正在使用 Behat 和 Mink & Goutte Driver。当我尝试通过 app_dev.php 文件(来自 Symfony2 标准版的典型 app_dev.php 文件)在我的开发环境中使用它时,我的测试工作正常(@987654321 @)。

但是,如果我想使用app_test 文件(与app_dev 文件相同,除了环境参数设置为 "test" 而不是 " dev", debug mode disabled),在注销场景下,Goutte好像找不到“user_signup”标识符,在“login”场景下,找不到“Root”文本节点.事实上,当我使用print last response 时,似乎用户只是没有登录:我仍然看到登录用户的表单......

当我在我的开发环境 (app_dev) 或生产环境 (app) 上时,一切似乎都工作得很好……有什么想法吗?

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

【问题讨论】:

  • 一些新消息:似乎在“测试”环境下,它不是一个包含会话 id 的“PHPSESSID”cookie,就像在 prod 和 dev 环境中一样,而是一个“MOCKSESSID”cookie。 ..任何想法如何更改cookie名称?
  • 没关系,我认为这与会话 cookie 名称无关,因为我可以在浏览器中访问我的 app_test,拥有这个 cookie 并且一切正常。问题是,似乎有了那个 cookie,在 Goutte 上,我有消息“您的会话已过期或您已禁用您的 cookie”,但我可以看到 Goutte 确实有 cookie(我之前谈到的 MOCKSESSID),所以回到第一方......
  • 会话 id cookie 的名称不匹配。检查您的配置,确保该会话 ID 名称与您的配置再次匹配。否则,每个请求都会模拟会话,您需要注意模拟会话具有正确的登录状态,否则您将看到上述错误消息。
  • 问题是,我直接用我的浏览器进行测试(在app_test.php),我确实有MOCKSESSID cookie。一切正常……但在使用 Behat + Mink (+ Goutte) 时却不行。所以,因为我有这个 cookie 和 Mink(我检查了 getCookieJar()),这意味着 cookie 被激活,似乎会话根本没有设置......

标签: php testing behat mink goutte


【解决方案1】:

默认情况下,Mink 使用名为“symfony2”的会话。这就是您从浏览器访问和使用 Behat 获得不同结果的原因。您可以在 behat.yml 文件中更改它。查看此文档以获取更多信息:http://extensions.behat.org/symfony2/index.html#symfony2-mink-session

【讨论】:

  • 那么为什么它与 prod 环境不同,后者可以完美地与 mink 一起使用?但是,嘿,我会尽快尝试这个,我会回来找你。
猜你喜欢
  • 2017-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-25
相关资源
最近更新 更多