首页 > 解决方案 > 将 PHPUnit 与 PHP-DI 一起使用

问题描述

我正在使用 PHP-DI 库,它通过使用引导程序和配置文件非常适合我的代码,正如 PHP-DI 文档所推荐的那样。

然后,在我的应用程序中,我通过调用引导程序来获取容器并开始工作:

$container = require __DIR__ . '/Container/bootstrap.php';
$main = $container->get( Main::class );

所以现在我正在尝试使用 PHPUnit 设置单元测试。

我想在每个 Test 类中获取 $container ,以便我可以按照 PHP-DI 文档中的建议使用 $container->injectOn($this) 注入每个测试的所有依赖项。

我偶然发现了这个未解决的问题 [这主要是在我的脑海中],但它仍然是开放的,似乎没有任何建议。

https://github.com/PHP-DI/PHP-DI/issues/125

我唯一的想法是我可以像我的主应用程序一样在 setUp() 中调用引导程序吗?

$container = require __DIR__ . '/Container/bootstrap.php';

这是我应该做的吗?有没有更优雅或推荐的方法来做到这一点?

谢谢!

标签: phpunit-testingdependency-injectionphpunitphp-di

解决方案


是的,在您的测试中引导您的容器是完全可以的。如果您的引导程序做了太多可能会变得更复杂的事情,但理想情况下您的引导程序不应该做太多事情(只需配置容器并创建应用程序类)。


推荐阅读