【发布时间】:2015-04-22 16:43:09
【问题描述】:
虽然这可能是一个基本问题,但可以假设使用 require_once,实际上它比那更复杂 - 至少对我而言。
我遇到的问题是我的项目结构很像 Java 中的包结构。我们如何使用全局名称空间。所以项目结构看起来像:
ProjectName/
ModuleOne/
Class.php
composer.json
tests/
phpunit.xml
bootstrap.php
Class_test.php
在上面的示例中,Class.php 将被实例化为:ProjectName\ModuleOne\Class();
现在的问题是我们如何设置我们的测试目录,因为Class_test.php 将使用Class.php 和任何其他依赖的类,我需要一些方法来让我在我的测试中实例化有问题的类.每当我尝试时,我都会收到一个错误,说它找不到我要实例化的有问题的类。
虽然这可能是一种不寻常的处理方式,但该项目可以使用 Composer 导出每个模块,并使用我们选择的命名空间自动加载到您的项目中,在本例中为 ProjectName。
我似乎遇到的问题是,我需要 tests/ 目录之外的每个类自动加载并准备就绪,这样如果 Class.php 扩展任何其他类,那么当调用 Class.php 时,它将知道,“好的,我需要去这里看看这个其他类是否也存在。”
现在每个模块都有一个composer文件,里面有类似的东西:
"autoload": {
"psr-0": {
"ProjectName\\ModuleOne\\": ""
}
},
那么我可以在 bootstrap.php 中使用一些方法来自动加载整个模块以进行测试吗?
【问题讨论】:
-
你能把 composer 创建的 autoload.php 文件包含在你的 bootstrap.php 中吗?
标签: php phpunit bootstrapping