Codeception 的自动加载 class 不会自动加载
Codeception's Autoload class doesn't autoload
我正在尝试将一堆助手自动加载到测试套件中。助手位于测试套件之外的文件夹中,希望我可以在需要时跨多个项目重用它们。
这就是我所拥有的:
- helpers
- TestHelper.php
- tests
- _data
- _output
- _support
- _generated
- Helper
- Integration.php
- IntegrationTester.php
- integration
- bootstrap.php
- integration.suite.yml
- vendor
- codeception.yml
这是 bootstrap 文件
// bootstrap.php
<?php
\Codeception\Util\Autoload::addNamespace( "awesome\helpers", __DIR__ . "../helpers" );
这是全局配置文件:
// codeception.yml
bootstrap: bootstrap.php
namespace: main
paths:
tests: tests
output: tests/_output
data: tests/_data
support: tests/_support
envs: tests/_envs
actor_suffix: Tester
extensions:
enabled:
- Codeception\Extension\RunFailed
这是集成套件的配置文件:
// integration.suite.yml
actor: IntegrationTester
modules:
enabled:
- \awesome\helpers\TestHelper
- \main\Helper\Integration
这是测试助手:
<?php
namespace awesome\helpers;
class TestHelper extends \Codeception\Module{
public function sayHello() {
return "Hello";
}
}
我一执行 codecept run
,就收到以下错误:
Module \awesome\helpers\TestHelper could not be found and loaded
我没有发布任何测试,因为它无关紧要,错误是在执行任何测试之前引发的,因为它是一个配置问题。
据我了解,全局配置文件应该 运行 测试前的 bootstrap 文件 运行,以及 [=37] 中的自动加载 class =] 文件应该加载 awesome\helpers
命名空间中的助手,但这显然没有发生。我做错了什么?
我认为您犯了一个典型的错误,在 ..
之前错过了 /
,所以您将路径设置为 tests../helpers
。
改变
\Codeception\Util\Autoload::addNamespace( "awesome\helpers", __DIR__ . "../helpers" );
到
\Codeception\Util\Autoload::addNamespace( "awesome\helpers", __DIR__ . "/../helpers" );
我正在尝试将一堆助手自动加载到测试套件中。助手位于测试套件之外的文件夹中,希望我可以在需要时跨多个项目重用它们。
这就是我所拥有的:
- helpers
- TestHelper.php
- tests
- _data
- _output
- _support
- _generated
- Helper
- Integration.php
- IntegrationTester.php
- integration
- bootstrap.php
- integration.suite.yml
- vendor
- codeception.yml
这是 bootstrap 文件
// bootstrap.php
<?php
\Codeception\Util\Autoload::addNamespace( "awesome\helpers", __DIR__ . "../helpers" );
这是全局配置文件:
// codeception.yml
bootstrap: bootstrap.php
namespace: main
paths:
tests: tests
output: tests/_output
data: tests/_data
support: tests/_support
envs: tests/_envs
actor_suffix: Tester
extensions:
enabled:
- Codeception\Extension\RunFailed
这是集成套件的配置文件:
// integration.suite.yml
actor: IntegrationTester
modules:
enabled:
- \awesome\helpers\TestHelper
- \main\Helper\Integration
这是测试助手:
<?php
namespace awesome\helpers;
class TestHelper extends \Codeception\Module{
public function sayHello() {
return "Hello";
}
}
我一执行 codecept run
,就收到以下错误:
Module \awesome\helpers\TestHelper could not be found and loaded
我没有发布任何测试,因为它无关紧要,错误是在执行任何测试之前引发的,因为它是一个配置问题。
据我了解,全局配置文件应该 运行 测试前的 bootstrap 文件 运行,以及 [=37] 中的自动加载 class =] 文件应该加载 awesome\helpers
命名空间中的助手,但这显然没有发生。我做错了什么?
我认为您犯了一个典型的错误,在 ..
之前错过了 /
,所以您将路径设置为 tests../helpers
。
改变
\Codeception\Util\Autoload::addNamespace( "awesome\helpers", __DIR__ . "../helpers" );
到
\Codeception\Util\Autoload::addNamespace( "awesome\helpers", __DIR__ . "/../helpers" );