【发布时间】:2015-03-17 04:02:45
【问题描述】:
我在使用 Codeception 自动加载器加载一些抽象测试类时遇到问题。抽象类的原因是模仿应用程序中使用的类的结构,以减少彻底测试应用程序所需的代码量。
假设我有一个用于测试的抽象类,假设“AbstractRepositoryTester”仅在“存储库”测试套件中使用(出于组织目的,我喜欢将事物分开)。
我测试的每个实现“RepositoryContract”的存储库都将有一个测试,该测试还使用一些覆盖的抽象方法扩展“AbstractRepositoryTester”。
现在执行此操作时,抽象类将不会在测试期间加载,而必须在引导文件中手动加载。还有另一个抽象扩展了 vanilla Codeception 测试类,这样我就可以设置一些变量(即 laracasts/testdummy)。
如果不手动输入 _boostrap 文件,这两个类都将无法加载。除此之外,套件特定的引导文件无法加载文件或似乎根本无法执行,因此我不得不将所有套件的所有引导代码放入全局 _bootstrap 文件中。
我还尝试通过“load”方法使用 Codeceptions 自动加载类 \Codeception\Util\Autoload::,但它似乎不起作用。
现在我在全局 _bootstrap 中使用 require_once 所以最后的问题是:
是否有正确的方法来自动加载(或仅加载)一个类以用作全局和每个套件的测试的一部分?
在像这样抽象我的测试方面,我是否走在正确的轨道上? TDD 对我来说是新事物,我正在努力改进我的开发工作流程(在 Laracasts 的帮助下)。
我已经在每个地方搜索了加载我需要的类的答案,但通常我会找到的只是 PHPUnit 特定的答案,这些答案似乎不起作用。我还仔细阅读了 Codeception 文档,该文档在该主题上感觉有点稀疏,并且 API 文档没有解释 Autoload::load 情况下的方法调用用法
干杯,
- 埃弗隆。
【问题讨论】:
-
自 2015 年 1 月 19 日起,希望您能找到答案。您能否反思您的问题并解释您是否以及如何完成这项工作?对我来说,这对 dadduckgo 来说是热门歌曲
-
恐怕我没有找到解决方案iirc。这些天我坚持使用标准的 phpunit。我怀疑我在遇到此问题的项目中没有正确编排我的测试资产。
-
太糟糕了,谢谢你的回复。也许如果我找到解决方案,我会在这个问题上发布一些关于它的内容。
标签: php class testing autoload codeception