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" );