如何将服务注入 Slim 4 框架中的 Behat 功能上下文

How to inject a service into Behat feature context in Slim 4 framework

当我搜索功能上下文的服务注入时,我总能找到 symfony 的扩展。但我需要扩展或其他东西才能在 Slim 4 框架中执行此操作。

谢谢。

我用一个特征解决了这个问题。

    // src/Application/Utility/ContainerInjection.php

    use DI\Container;
    use DI\ContainerBuilder;

    trait ContainerInjection
    {
        /**
         * @return Container
         */
        public function getContainer()
        {
            // To find project base path 
            // according to path where trait is found
            $path_main = __DIR__ . '/../../../';

            // Instantiate PHP-DI ContainerBuilder
            $containerBuilder = new ContainerBuilder();

            $settings = require $path_main . 'app/settings.php';
            $dependencies = require $path_main . 'app/dependencies.php';

            $settings($containerBuilder);
            $dependencies($containerBuilder);

            // Build PHP-DI Container instance
            return $containerBuilder->build();
        }
    }

在 FeatureContext 中使用此特征

    class FeatureContext implements Context
    {
        use ContainerInjection;

        private $myService;

        public function __construct()
        {
            $container = $this->getContainer();
            $this->myService = $container->get(MyService::class);
        }
     }