使用Behat / Mink时出现TypeError

时间:2012-08-10 00:48:15

标签: php behat mink

执行以下代码:

<?php

class InheritedFeatureContext extends Behat\MinkExtension\Context\MinkContext
{
    /**
     *Simulates hovering over a link
     *
     * @When /^I mouse over "([^"]*)"$/
     */
        public function iMouseOver($link)
        {
        $this->getSession()->getPage()->findLink($link)->mouseOver();
        }

    /**
     *Waits for the appearence of a drop down
     *
     * @Then /^I wait for the suggestion box to appear$/
     */
    public function iWaitForTheSuggestionBoxToAppear()
    {
        $this->getSession()->wait(5000, "$('.suggestions-results').children().length > 0");
    }
}

产生错误msg:

  TypeError: $ is not a function

参考:

$this->getSession()->wait(5000, "$('.suggestions-results').children().length > 0");

此代码以前工作得很好。任何想法

上下文:这是Behat / Mink功能的一部分

4 个答案:

答案 0 :(得分:2)

你可能没有包含jQuery但是你在这里试图使用它:

$this->getSession()->wait(5000, "$('.suggestions-results').children().length > 0");

wait()方法接受javascript作为其第二个参数。它等待脚本评估为true(作为第一个参数传递的最大毫秒数)。

答案 1 :(得分:1)

如果我没错,这段代码来自网站上的貂皮示例。

该示例使用http://en.wikipedia.org/wiki作为基本URL,维基百科确实附带了jquery脚本。在您的情况下,如果它包含jquery,则检查您的URL位置

答案 2 :(得分:0)

很可能你没有包含jQuery。

如果您不想将jQuery添加到项目中以支持此Mink测试,请尝试将您的行更改为以下内容,这将完成相同的操作,但不使用jQuery:

$this->getSession()->wait(5000, "document.querySelector('.suggestions-results').children.length > 0");

答案 3 :(得分:-1)

这适用于我使用jQuery而不是$快捷方式:

$this->getSession()->wait(5000, "jQuery('.suggestions-results').children().length > 0");