如何在Codeception帮助器中访问actor(例如AcceptanceTester)

时间:2014-10-02 11:21:29

标签: php selenium acceptance-testing codeception

当我使用codeception生成的AcceptanceHelper(_support / AcceptanceHelper.php)时,如何访问Actor / AcceptanceTester($ I)。如何从StepObjects访问我的函数?

我有:

接受/ _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 / my StepObject?

1 个答案:

答案 0 :(得分:2)

从测试中传入$ I变量。它有点冗长,但工作正常。

public function deleteCookies($I){...}

然后在测试中写道:

$I->deleteCookies($I);