未定义的方法AcceptanceTester :: getModule

时间:2019-07-14 15:15:01

标签: php yii2 webdriver phpunit codeception

我有一个Yii2项目,并且正在使用Codeception运行自动化测试。

我打算获得对Webdriver实例的引用。 该怎么做?

当我从Cest类或Acceptancetester类调用$ this-> getModule(“ WebDriver”)时,出现了未定义的方法异常。

这是我的accept.suite.yml文件:

    class_name: AcceptanceTester
    modules:
        enabled:
            - Cli:
            - WebDriver:
                url: http://localhost:8081/
                browser: firefox
                port: 4455
            - Yii2:
                part: [orm,fixtures]
                entryScript: index-test.php
                cleanup: false

这是我的AcceptanceTester,它正在尝试引用WebDriver:

    /**
     * Inherited Methods
     * @method void wantToTest($text)
     * @method void wantTo($text)
     * @method void execute($callable)
     * @method void expectTo($prediction)
     * @method void expect($prediction)
     * @method void amGoingTo($argumentation)
     * @method void am($role)
     * @method void lookForwardTo($achieveValue)
     * @method void comment($description)
     * @method \Codeception\Lib\Friend haveFriend($name, $actorClass = NULL)
     *
     * @SuppressWarnings(PHPMD)
    */
    class AcceptanceTester extends \Codeception\Actor
    {
        use _generated\AcceptanceTesterActions;


        public function sendEnterKey(){
             // the following line will raise an exception
            $driver = $this->getModule("WebDriver");
            $driver->getKeyboard()->sendKeys(\Facebook\WebDriver\WebDriverKeys::ENTER);
        }

    }

在调用AcceptanceTester :: sendEnterKey方法时,出现了一个异常,提示“调用未定义的方法AcceptanceTester :: getModule”

p.s。 还有一个标题相同的问题:Call to undefined method AcceptanceTester::getModule,但这不是重复的问题。  该问题中的问题是由于在Cest类中进行了getModule调用。但是我没有犯同样的错误。我把电话放在了AcceptanceTester

1 个答案:

答案 0 :(得分:1)

我认为您需要将方法放入Acceptance helper类中。

它应该位于new

所以尝试一下:

/_support/Helper/Acceptance.php