我正在使用 PHP-DI 库,它通过使用引导程序和配置文件非常适合我的代码,正如 PHP-DI 文档所建议的那样。
然后,在我的应用程序中,我获取容器并通过调用引导程序来启动事情:
$container = require __DIR__ . '/Container/bootstrap.php';
$main = $container->get( Main::class );
所以现在我正在尝试使用 PHPUnit 设置单元测试。
我想掌握每个测试类中的$container,以便我可以按照 PHP-DI 文档中的建议使用 $container->injectOn($this( 注入每个测试的所有依赖项。
我偶然发现了这个悬而未决的问题[这主要是在我的脑海中],但它仍然悬而未决,似乎没有任何建议。
https://github.com/PHP-DI/PHP-DI/issues/125
我唯一的想法是我可以像我的主应用程序一样在 setUp(( 中调用引导程序?
$container = require __DIR__ . '/Container/bootstrap.php';
这是我应该做的吗?有没有更优雅或推荐的方法可以做到这一点?
谢谢!
是的,在测试中引导容器是完全可以的。如果您的引导程序正在执行太多可能会变得更加复杂的操作,但理想情况下,您的引导程序不应该执行太多操作(只需配置容器并创建应用程序类(。