如何以编程方式调用Behat步骤?警告:缺少Behat \ Behat \ Definition \ Call \ Given :: __ construct()的参数2

时间:2016-08-10 14:33:42

标签: php behat

在创建我的第一个Behat测试时,我已经知道了3.0.15并且我正在关注此tutorial

代码:

/**
 * @When I go to see akaneo product page for :country written in :language language   
 */
public function findOrCreateProductForCountryAndVisitIt($country, $language)
{
    global $user;
    $node = new stdClass;
    $node->title = 'Test Product';
    $node->type = 'akaneo_product';
    node_object_prepare($node);
    $node->uid = $user->uid;
    $node->status = 1;
    $node->language = $language;
    #load domain id for country
    $result = db_select('domain', 'd')
        ->fields('d', array('domain_id'))
        ->condition('subdomain',  strtolower($country) . '_schiller.%', 'LIKE')
        ->execute()
        ->fetchAssoc();



    if (empty($result)) {
        throw new Exception("Cannot find subsidiary for country code: $country");
    }

    $node->domains = array(
      $result['domain_id'] => $result['domain_id']
    );

    $node = $this->nodeCreate($node);

    return new Given('I go to node/' . $node->nid);

}

输出:

  Warning: Missing argument 2 for Behat\Behat\Definition\Call\Given::__construct(), called in features/bootstrap/FeatureContext.php on line 435 and defined in vendor/behat/behat/src/Behat/Behat/Definition/Call/Given.php line 27
│
╳  Unable to access the response content before visiting a page (Behat\Mink\Exception\DriverException)
│
└─ @AfterStep # ScreenshotContext::logResponseAfterFailedStep()

我应该以可调用的构造函数参数传递什么?

1 个答案:

答案 0 :(得分:1)

Behat 3中无法实现链接步骤。 如果要重用某些代码,只需遵循常规OOP方法 - 将公共代码提取到单独的方法或类中。

您可以在此处找到要删除的说明:https://github.com/Behat/Behat/issues/546#issuecomment-45202991