Dependency injection Codeception注入使用页面对象失败
我不熟悉Codeception,但在注入页面对象时遇到了一个问题。当我向页面对象添加以下构造逻辑时,就会出现问题Dependency injection Codeception注入使用页面对象失败,dependency-injection,codeception,Dependency Injection,Codeception,我不熟悉Codeception,但在注入页面对象时遇到了一个问题。当我向页面对象添加以下构造逻辑时,就会出现问题 public function __construct(\AcceptanceTester $I) { $this->tester = $I; } 。。。我从以下登录页面对象示例中获得: 我得到的错误是: [Codeception\Exception\InjectionException] 未能在“MyCest”的实例中注入依赖项。无法创建“页面\登录”的实例。无法创
public function __construct(\AcceptanceTester $I) {
$this->tester = $I;
}
。。。我从以下登录页面对象示例中获得:
我得到的错误是:
[Codeception\Exception\InjectionException]
未能在“MyCest”的实例中注入依赖项。无法创建“页面\登录”的实例。无法创建“AcceptanceTester”的实例。未能创建“Codeception\Scenario”的实例。无法解析依赖项“Codeception\TestCase”
这就是我在Cest中注入页面的方式
protected function _inject(\Page\Login $login) {
$this->login_page = $login;
}
如果删除_构造代码,错误就会消失。这是Codeception中的错误还是我做错了什么
这是我找到的工作
use \AcceptanceTester;
use Page\Login as LoginPage;
class MyCest {
protected $login_page;
public function _before(AcceptanceTester $I) {
$this->login_page = new LoginPage($I);
}
}
这是预期的行为 您的LoginPage构造函数不应该在DI期间有任何要实例化的参数,所以您的解决方法是使用AcceptanceTester实例初始化LoginPage实例的正确方法 当您将AcceptanceTester指定为LoginPage的ctor arg时,Codeception的DI机制将尝试按以下方式递归解决依赖关系:
LoginPage(AcceptanceTester) -> AcceptanceTester(Scenario) -> Scenario(TestCase) -> TestCase
但TestCase是抽象类,因此无法实例化。这是预期的行为 您的LoginPage构造函数不应该在DI期间有任何要实例化的参数,所以您的解决方法是使用AcceptanceTester实例初始化LoginPage实例的正确方法 当您将AcceptanceTester指定为LoginPage的ctor arg时,Codeception的DI机制将尝试按以下方式递归解决依赖关系:
LoginPage(AcceptanceTester) -> AcceptanceTester(Scenario) -> Scenario(TestCase) -> TestCase
但是TestCase是抽象类,所以不能实例化。谢谢你的解释。谢谢你的解释。