Я хотел создать несколько повторно используемых методов, которые используют набор различных методов AcceptanceTester в Form Helper. Функции не подходят для PageObject, и поскольку StepObjects наследуются от AcceptanceTester, и вы можете внедрить их, заменяя AcceptanceTester в методах, и я не хочу создавать Form StepObject и вводить как AcceptTester, так и Form, которые кажутся небрежными.
Есть ли способ получить доступ к $ I в помощнике? Это похоже на случай использования помощника. Или это не тот способ, которым вы должны использовать помощников? Если не кто-то может объяснить их использование реальным примером, документы в этом разделе, кажется, не помогают моему пониманию. Я вижу, что мог бы передать $ I помощнику, но я бы предпочел внедрить два StepObjects, передав $, я просто выгляжу неправильно.
ХЕЛПЕР
<?php
namespace Helper;
class Form extends \Codeception\Module
{
public function seeFormError($message) {
$I = ???
$I->see($message, 'small.error);
}
}
ИСПОЛЬЗОВАНИЕ
protected $form;
protected function _inject(\Helper\Form $form)
{
$this->form = $form;
}
public function login()
{
$this->form->seeFormError('Enter a valid email');
}
<?php
namespace Codeception\Module;
class UnitHelper extends \Codeception\Module
{
public function seeFormError($message)
{
$I = $this;
$I->see($message, 'small.error');
}
}
Используйте $ I = $ this. Вы работаете над объектом, который хотите расширить.
После этого вы можете использовать новый метод в вашем cest / test, как и все остальные $I->seeFormErrors($message);
Попробуйте исправить ваше пространство имен. Пример, который я взял у моего помощника по тестированию модулей.
Других решений пока нет …