当我使用由codeception生成的acceptancehelper(_support/acceptancehelper.php)时,如何访问actor/acceptancetester($i)。如何从stepobjects访问我的函数?
我有:
接受/\u steps/mystepobject.php

namespace AcceptanceTester;


class MyStepObject extends \AcceptanceTester
{
public function deleteCookies(){
    $I = $this;

    $I->amGoingTo("delete all cookies...");
    $I->executeInSelenium(function(\WebDriver $webdriver) {$webdriver->manage()->deleteAllCookies(); });
    $I->reloadPage();
}

public function loginUser($user,$password,$language = 'Untranslated')
{
    $I = $this;

    $I->amOnPage(\LoginPage::$URL);
    $I->deleteCookies();
    $I->amGoingTo('fill the fields...');
    $I->fillField(\LoginPage::$usernameField, $user);
    $I->fillField(\LoginPage::$passwordField, $password);
    $I->click(\LoginPage::$loginButton);
}
}

在类_support/AcceptanceHelper.php中,我想从AcceptanceTester中调用方法,比如$I->canSee('something'),我想从StepObject中调用我自己的方法(比如'login')。
我知道我可以用$this->getModule('WebDriver')得到一个特定的模块(例如webdriver)。但是我怎样才能得到AcceptanceTester/我的StepObject呢?

最佳答案

从测试中传入$i变量。有点冗长,但效果很好。
public function deleteCookies($I){...}
然后在测试中写下:
$I->deleteCookies($I);

07-24 21:39