【问题标题】:Using PHPUnit with PHP-DI将 PHPUnit 与 PHP-DI 一起使用
【发布时间】:2019-04-15 18:03:16
【问题描述】:

我正在使用 PHP-DI 库,它非常适合 using a bootstrap and config file 编写的代码,正如 PHP-DI 文档所推荐的那样。

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

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

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

我想在每个 Test 类中获取 $container 以便我可以使用 $container->injectOn($this) as suggested in the PHP-DI documentation 注入每个测试的所有依赖项。

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

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

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

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

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

谢谢!

【问题讨论】:

  • 旁注: PHP-DI 不是一个框架。这是一个图书馆。

标签: php unit-testing dependency-injection phpunit php-di


【解决方案1】:

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

【讨论】:

  • 感谢您的反馈——我在原始查询中没有提到,这是一个 Wordpress 插件,我正在使用 Wordpress 插件测试工具,它加载 WP,它加载我的插件,哪个引导容器等... WP 加载程序正在引导它以及我的测试代码是否有问题?编辑:它似乎正在测试正常......我只是想知道我是否应该继续研究一种简化的方法,以便容器只加载一次。
  • 老实说,我不确定,但只要它可以工作并且不会太慢,在测试之间尽可能多地重新启动绝不是一件坏事。至少每个测试都与其他测试隔离。
猜你喜欢
  • 1970-01-01
  • 2017-09-16
  • 2020-11-03
  • 2021-01-09
  • 2016-01-07
  • 2017-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多