【问题标题】:Behat with MinkBehat 与水貂
【发布时间】:2011-08-04 23:08:19
【问题描述】:

有谁知道如何成功配置 Mink 以与 Behat 一起工作?如果有人不知道,Behat 是 PHP 的 BDD(行为驱动开发)框架,Mink 提供了一个浏览器模拟器抽象层来进行测试。

您可以在http://behat.org/ 和 Mink 上找到更多关于 Behat 的信息https://github.com/Behat/Minkhttp://www.knplabs.com/fr/blog/one-mink-to-rule-them-all

基本上我按照http://www.knplabs.com/fr/blog/one-mink-to-rule-them-all 的说明配置我的 Mink 以与我的 Behat 一起工作。我的 behat.yml 位于 Behat 文件夹中,而不是 Mink 文件夹中,如下所示:

default:
  paths:
    features:               %%BEHAT_CONFIG_PATH%%/features
    formatter:
    name:                   progress
pretty:
  formatter:
    name:                   pretty
    parameters:
      multiline_arguments:  false
default:
    environment:
        parameters:
            start_url: http://localhost/
imports:
    - mink/behat.yml

我的 features/support/boostrap.php

中也有以下代码
require_once 'mink/autoload.php';

但是,在我的 features/support/env.php

中有以下代码
$world->client = new \Goutte\Client;

当我使用 behat 命令时,会在终端 (OSX) 中给我一个 PHP 致命错误:找不到类 'Goutte\Client'。即使我的 behat/Mink/Vendor/Goutte 文件夹中有 goutte.phar,也会发生这种情况。

希望任何人都可以告诉我我哪里出错了,如果问题中有任何我不清楚的地方,请告诉我。非常感谢。

【问题讨论】:

    标签: php bdd behat


    【解决方案1】:

    这里是:https://github.com/knplabs/mink-demo ;-)

    基本上,使用 Mink,您无需创建或要求 Goutte 客户端,它由 Mink 自动完成。您的 $world 也得到了增强,现在您可以在步骤定义中获取 mink 会话:

    $downloadsLink = $world->getSession()->getPage()->findLink('downloads');
    

    另外,您忘记包含 PHPUnit!

    查看 mink-demo 以获得很好的示例 ;-)

    【讨论】:

    • 非常感谢提供的重要信息 =) 不过,我又遇到了另一个问题~当我在演示中使用 behat 命令时遇到了这个错误 -> PHP 警告:preg_match(): Unknown modifier 'w' 在 /usr/local/pear/share/pear/behat/src/Behat/Behat/Definition/DefinitionDispatcher.php 中的第 185 行'鉴于我在 /wiki/Main_Page'。可能是因为它的步骤定义是: $steps->Given('/^I am on /wiki/Main_Page$/', function($world) { //throw new \Behat\Behat\Exception\Pending( ); });或者我认为这可能是我的一些配置错误。非常感谢。
    • 我找到了出现该错误的原因。这是由于步骤定义中的正则表达式不正确。该行的步骤定义应为: $steps->Given('/^I am on \/wiki\/Main_Page$/', function($world) ... 以便将 wiki 前面的斜线视为只是一个斜线,但没有使'w'成为修饰符。但是,现在该错误消失了,我收到一条新的错误消息:错误:调用未定义的方法 Behat\Behat\Environment\Environment::getSession in steps/ ajax.php 在第 12 行,我有 $world->getSession()->wait(5000, "$('.suggestions-results').children().length > 0");
    • 只需安装最新的 Behat、Mink 并按照链接中的所有说明进行操作!
    • 确保您的 ymls 格式正确,否则您将度过难关。解析它的技术对空格和制表符非常敏感
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-28
    • 1970-01-01
    • 2016-07-09
    • 1970-01-01
    • 2017-02-06
    相关资源
    最近更新 更多