Codeception 助手使用 $I 而不将其传递给助手
Posted
技术标签:
【中文标题】Codeception 助手使用 $I 而不将其传递给助手【英文标题】:Codeception helper to use $I without passing it into the helper 【发布时间】:2015-12-20 21:15:45 【问题描述】:我想创建一些可重用的方法,这些方法使用 Form Helper 中不同 AcceptanceTester 方法的集合。这些函数不适合PageObject,并且由于StepObjects继承自AcceptanceTester,您可以在方法中注入它们替换AcceptanceTester,我不想创建一个Form StepObject并同时注入AcceptTester和Form,这看起来很草率。
有没有办法在帮助程序中访问 $I ?这似乎是一个帮助者的用例。或者这不是你应该使用助手的方式吗?如果没有人可以用一个真实的例子来解释他们的用法,那么本节中的文档似乎对我的理解没有帮助。我可以看到我可以将 $I 传递给助手,但我宁愿注入两个 StepObjects,传递 $I 看起来不对。
助手
<?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');
【问题讨论】:
可以这样访问其他模块的方法:$this->getModule('PhpBrowser')->see(); 【参考方案1】:<?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);
尝试修复您的命名空间。我从单元测试助手中获取的示例。
【讨论】:
作为奖励,要启用智能感知,您可以通过 phpdoc 键入提示变量。以上是关于Codeception 助手使用 $I 而不将其传递给助手的主要内容,如果未能解决你的问题,请参考以下文章