问题标签 [mink]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
913 浏览

symfony - sahi 和 symfony2

我想用 symfony2 测试 behat、mink 和 sahi

所以,在我的 config_test.yml 我有

并在 test.feature

当我执行时我有这个

PHP 致命错误:在第 26 行调用 C:\wamp\ www\Symfony_Standard_2.0.15_2\Symfony\vendor\buzz\lib\Buzz\Client\AbstractCurl.p 中未定义的函数 Buzz\Client\curl_init()

请帮帮我,

0 投票
1 回答
410 浏览

symfony - 我不能运行 sahi

可能重复:
sahi 和 symfony2

我想用 symfony2 测试 behat、mink 和 sahi。

在我的文件 config_test.yml 我有

在我的 test.feature 当我使用

结果很好:

但是当我添加@mink:sahi我得到

你有什么主意吗?

0 投票
1 回答
1916 浏览

symfony - 水貂痛风司机。无法在 Symfony 2.0 上安装 fabpot/goutte

我正在使用带有 Symfony 2.0.15 的作曲家并迁移到最新的 Behat 2.4。这是在我的composer.json

我跑:php composer.phar update --dev

并且有一个错误:

如果我正确理解了这个错误,那是因为fabpot/goutte包依赖于 Symfony 2.1 包并且不适用于 Symfony 2.0。纠正我,如果我错了。

这是我的behat.yml

这是我失败场景的示例:

"When I go to"- 是 MinkContext 步骤,但"Then the response code should be 200"- 是来自 Behat\CommonContexts\WebApiContext 的步骤。当我只使用 MinkContext 中的步骤时 -"Then the response status code should be 200"它工作得很好。


最后的答案是Behat\CommonContexts\WebApiContext与 Behat 2.4 不兼容。

0 投票
1 回答
697 浏览

symfony - symfony2、behat 和 mink:重定向后访问容器

我有一个 behat+mink 场景,其中一个步骤访问一个 URL (mink),并且控制器

  • 将某些东西放入容器中的服务中
  • 执行重定向到另一个 URL

问题是控制器重定向重置了容器,所以重新构造了服务,下面的behat步骤不能再访问了

有没有办法访问容器?

0 投票
4 回答
2498 浏览

symfony - 如何在 Mink 中配置 curl 参数?

我正在尝试将 Behat 带入 https 安全项目,并且 mink 在发起 curl 请求时失败。

这个问题可以通过设置这两个 curl 参数来解决:

我知道 Mink 在内部使用 guzzle,它启动 curl 请求。如何使用 curl 选项正确实例化 guzzle 客户端?

0 投票
1 回答
1085 浏览

phantomjs - 我们网站的功能测试

我正在与Mink / Sahi合作为我的网站编写功能测试套件。

我使用 Firefox 和 Chrome 进行了一组测试,对此我很满意。他们每晚都在我们的 Jenkins 盒子上运行,并且运行良好。

然而,因为我们的 Jenkins 盒子是一个服务器,而 Chrome/Firefox 是 GUI 应用程序,所以我不得不让测试在我的台式机上运行。这很痛苦,因为这意味着我必须每晚都打开它,这不利于环境和成本。另外,如果它在电源、网络或软件方面有任何问题,那么测试就会失败。

所以我想要一些关于切换测试以在 Jenkins 盒子本身上使用无头浏览器的建议。

看来我有三个选择:Goutte、Zombie 和 Phantom(当然,除非有人可以推荐另一个)。以下总结了我到目前为止的进展:

  • Goutte:这是 PHP 驱动的,因此可以在 Mink 内部运行,无需 Sahi。这听起来很棒,因为 Jenkins 盒子的资源有限,所以我需要安装和运行的越少越好。但是,我需要运行 JS 代码作为测试的一部分,我知道 Goutte 无法做到这一点。这能排除吗?

  • Zombie:在 Node.js 下运行。不幸的是,我根本无法完成这项工作。我已经安装了 Node、NPM 和 Zombie,但我无法让 Mink 识别它。谁能给我一些比 Mink 网站更清晰的说明,告诉我如何运行它?

  • Phantom:不幸的是,Mink 没有 Phantom 的驱动程序,所以我必须通过 Sahi 运行它。正如我所说,我宁愿不必在 Jenkins 服务器上安装 Sahi,尤其是因为它还需要作为服务器连续运行。但这是迄今为止我唯一成功的。在 Sahi 下运行它,我可以让我的测试成功运行(虽然不是一致的,这是一个令人担心的问题 - 它似乎随机超时,大约三分之一)。任何人都可以建议一种无需安装 Sahi(或任何其他中间层服务器)即可运行它的方法吗?或者如果我确实需要 Sahi,谁能告诉我如何配置 Jenkins 以在测试套件开始时启动 Sahi 并在结束时停止它?

我真的很感激任何关于如何进行的建议。出于某种原因,这些选择似乎都没有明显的胜利。但是功能测试很重要,所以这一定是一个已解决的问题。对我来说最好的解决方案是什么?

(我知道还有用 Javascript 重写我的脚本以直接与 Zombie 或 Phantom 对话的选项。我不想这样做,因为当它们失败时,我仍然需要看到它们在 Firefox 中运行以查看发生了什么错了,所以像 Mink 这样的跨浏览器界面是理想的——更不用说我已经用 PHP 编写了所有测试!)

感谢您的任何建议。:)

0 投票
1 回答
1188 浏览

symfony - 使用 Behat 和 Mink 测试 Symfony2 的注册系统

我的问题与 Symfony2 中某些应用程序的测试有关。我使用 Behat 和 Mink 编写测试,但注册系统的测试存在一些问题。

我想在用户提交注册表后查看电子邮件,然后点击此电子邮件中的激活链接。

我找到了一个关于电子邮件测试的简短教程:http:
//docs.behat.org/cookbook/using_the_profiler_with_minkbundle.html

本教程中的解决方案只有在 symfony 的配置文件中将“intercept_redirects”设置为“true”时才有效,但我已经有一些测试需要将此变量保留为“false”,所以我的问题是......是否可能临时更改此值,仅用于一个测试,还是我必须将此值更改为“true”,然后更新所有测试?

您如何测试您的注册系统,以及如何为它们编写测试?

0 投票
1 回答
713 浏览

behat - 为 Mink 创建步骤

我是 Mink、Behat 等的新手,所以我需要帮助。

我有一个包含一些行的表,我想检查是否删除了一行。

在我的场景中,我有这样的事情:

我该怎么做?我怎么做“响应不应包含一行的某些值”?

我不知道这对 Mink 是否可行,或者我需要使用统一测试。

0 投票
4 回答
2834 浏览

php - Behat with Jenkins - 如何提供 PHP 应用程序?

我最近开始在一个使用 Slim 微框架的 PHP 项目中使用BehatMink我的 Behat 测试工作正常,但我想将它们作为我构建的一部分运行,它使用 Sebastian Bergmann 的 Jenkins-PHP 模板。

为此,我希望我需要运行一个 Web 服务器来为 Slim 应用程序提供服务。显而易见的答案似乎是 PHP 5.4 的内置 Web 服务器,但我仅限于 PHP 5.3。

我目前唯一的想法是有一个部署阶段,如果 Ant 构建通过,Jenkins 会在服务器上部署一个工作区,然后针对它运行 Behat 测试。感觉这将是很多工作并且可能会不稳定,而且它需要启动另一个 VM,我希望避免这种情况。我们希望在大量不同的项目中使用 Behat,因此“一次性”的东西会更可取。

解决此问题的最佳方法是什么?

0 投票
1 回答
415 浏览

behat - 如何将对象传递给 behat 步骤?

我想知道是否可以将对象传递给 Behat 的步骤。

例如,我的表单的一个字段将用一个对象填充。它填充了一个您可以在建议框中选择的对象。我知道 sahi 或 selenium 的另一种方式,但我不想要这样,我想要这样的步骤:“当我用对象填写“字段”时”。这是可能的?

对不起,如果我没有很好地解释它。