behat - 努力让 Mink 与 Behat 合作

标签 behat mink

我一直在关注本指南(并通过 Composer 安装了所有内容):http://docs.behat.org/cookbook/behat_and_mink.html并试图让 Behat + Mink 工作,但每次我尝试运行 bin/behat 时都会收到以下错误:

PHP Fatal error:  Call to a member function getSession() on a non-object in vendor/behat/mink-extension/src/Behat/MinkExtension/Context/RawMinkContext.php on line 80

那行代码是:
return $this->getMink()->getSession($name);

所以由于某种原因,貂属性是空的,但我不知道为什么。

我的 .feature 文件与指南中的完全相同,FeatureContext 类也来自指南:
use Behat\Behat\Context\ClosuredContextInterface,
    Behat\Behat\Context\TranslatedContextInterface,
    Behat\Behat\Context\BehatContext,
    Behat\Behat\Exception\PendingException;
use Behat\Gherkin\Node\PyStringNode,
    Behat\Gherkin\Node\TableNode;     

use Behat\MinkExtension\Context\MinkContext;

/**
 * Features context.
 */
class FeatureContext extends MinkContext 
{

}

我的 vendor/behat/mink/behat.yml 文件包含:
context:
  extensions:
    Behat\MinkExtension\Extension:
      base_url:  'http://en.wikipedia.org/'
      goutte:    ~
      selenium2: ~

我也试过让我的类扩展 BehatContext 然后调用 useContext 但这给了我同样的错误。 Behat 本身似乎工作它只是任何与 Mink 产生 fatal error ,我不知道如何解决它。

最佳答案

这是因为你应该复制 vendor/behat/behat/behat.yml.dist文件到 your/project/root/behat.yml ,而不是在供应商目录中编辑文件并添加 extesionsdefault部分。

这就是它的样子:

default:
  extensions:
    Behat\MinkExtension\Extension:
      base_url: http://lunch-time/app_dev.php
      goutte: ~
      selenium2: ~

  paths:
    features:  features
    bootstrap: features/bootstrap

annotations:
  paths:
    features: features/annotations

closures:
  paths:
    features: features/closures

关于behat - 努力让 Mink 与 Behat 合作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10918475/

相关文章:

php - Behat - 日期的步骤定义?今天和 -/+ 天?

html - 我如何点击 Behat 中的跨度?

selenium - 在多个浏览器中并行运行

list - 如何遍历 behat/mink 中的所有 <select> 字段选项

Symfony 2 BDD Behat 上下文 "I am not logged in"

selenium - Behat + selenium 2 等待页面加载

php - Behat MinkExtension 遍历,计算 css-selectors

php - 使用 behat 和 mink PHP 检测新标签打开

php - 我如何能够将 Behat 3.1 与 Selenium 3.6 和 Mink 一起使用?