Symfony 3.2 参数未传递给服务的 __construct 方法

土豆泥

我正在尝试创建一个本质上是 Stripe 包装器的服务。在构造方法中,我想通过服务的构造方法传入 api 机密和可发布密钥,该方法在 .env 文件中设置为环境变量。但是每次我在这个包装器上运行 phpunit 测试时,我都会收到这个错误:

Missing argument 1 for AppBundle\Util\StripeService::__construct(), called in /Users/name/Sites/app/tests/AppBundle/Util/StripeServiceTest.php

这是我的设置:

# .env
SYMFONY__STRIPE_SECRET=''
SYMFONY__STRIPE_PUBLISHABLE=''

# config_test.yml
parameters:
stripe.secret: '%env(stripe_secret)%'
stripe.publishable: '%env(stripe_publishable)%'

services:
    app.stripe_service:
        class: AppBundle\Util\StripeService
        arguments: ['%stripe.secret%', '%stripe.publishable%']

# StripeService.php
namespace AppBundle\Util;
class StripeService {
    public function __construct($secretKey, $publishableKey)
    {
        $this->secretKey = $secretKey;
        $this->$publishableKey = $publishableKey;
    }

# StripeServiceTest.php
namespace Tests\AppBundle\Util;

use AppBundle\Util\StripeService;
use PHPUnit\Framework\TestCase;

class StripeServiceTest extends TestCase {

    protected function setUp()
    {
        require_once realpath(__DIR__ . '/../../../app/AppKernel.php');
        $kernel = new \AppKernel('test', true);
        $kernel->boot();
    }

    public function testFindEvent()
    {
        $stripe = new StripeService();
        $stripe->findEvent('test');
    }
}

# AppKernel.php
use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Config\Loader\LoaderInterface;

class AppKernel extends Kernel
{
    public function registerContainerConfiguration(LoaderInterface $loader)
    {
        $loader->load($this->getRootDir().'/config/config_'.$this->getEnvironment().'.yml');

        # This is where I am loading in the variables from .env
        try {
            (new Dotenv\Dotenv(realpath(__DIR__ . '/..')))->load();
            $envParameters = $this->getEnvParameters();
            $loader->load(function($container) use($envParameters) {
            $container->getParameterBag()->add($envParameters);
            });
        } catch (Dotenv\Exception\InvalidPathException $e) {
        }
    }
}

我按照文档中有关服务容器的说明进行操作,并按照 [this blog post] 使用 vlucas/phpdotenv 从 .env 文件中获取变量。我是否遗漏了某些东西,或者我是否错误地设置了某些东西,以至于当我的测试初始化​​时new StripeService()它无法获取 中列出的参数config_test.yml

丹·杜米特留

StripeServiceTest 应如下所示:

class StripeServiceTest extends TestCase {

protected $container;

protected function setUp()
{
    require_once realpath(__DIR__ . '/../../../app/AppKernel.php');
    $kernel = new \AppKernel('test', true);
    $kernel->boot();
    $this->container = $kernel->getContainer();
}

public function testFindEvent()
{
    $stripe = $this->container->get('app.stripe_service');
    $stripe->findEvent('test');
}
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Symfony2:ContextErrorException:可捕获的致命错误:传递给[...] :: __ construct()的参数1必须实现接口[...]

来自分类Dev

symfony 3传递给[some service] :: __ construct()的参数1必须是给定的Doctrine \ ORM \ EntityRepository的[something]实例的实例

来自分类Dev

symfony 3传递给[some service] :: __ construct()的参数1必须是给定Doctrine \ ORM \ EntityRepository的[something]实例的实例

来自分类Dev

Symfony2:表单在提交时抛出“传递给Doctrine \ Common \ Collections \ ArrayCollection :: __ construct()的参数1必须为数组,给定对象”

来自分类Dev

Symfony2:表单在提交时抛出“传递给Doctrine \ Common \ Collections \ ArrayCollection :: __ construct()的参数1必须是给定对象的数组”

来自分类Dev

Symfony2如何将URI的参数传递给控制器的Action方法?

来自分类Dev

Symfony2如何将URI的参数传递给控制器的Action方法?

来自分类Dev

Symfony2服务容器-将普通参数传递给服务构造函数

来自分类Dev

Symfony2:服务容器未传递给控制器构造函数

来自分类Dev

Symfony2:服务容器未传递给控制器构造函数

来自分类Dev

如何在Symfony2中将嵌套参数值传递给服务

来自分类Dev

如何从控制器将可选参数传递给Symfony2服务?

来自分类Dev

Symfony3,缺少Doctrine \ ORM \ EntityRepository :: __ construct()的参数1,如何以及为什么

来自分类Dev

将参数传递给Symfony 3 Form configureOptions

来自分类Dev

Symfony 使用 GET 类型将参数传递给方法

来自分类Dev

使用Restler 3的依赖项注入容器时将参数值传递给__construct()

来自分类Dev

可捕获的致命错误:传递给(...)\ Handler \ FlightHandler :: __ construct()的参数1必须是Symfony \ Component \ Form \ Form的实例

来自分类Dev

Symfony2 DI不将服务作为参数传递

来自分类Dev

Symfony3 Form组件尝试将null传递给PHP 7中的类型提示方法

来自分类Dev

将实体传递给FormType,以便其方法可以在Symfony2的buildForm()中运行

来自分类Dev

Symfony 3表单类型内部服务器错误:类型错误:传递给AppBundle的参数1必须是AppBundle \ Form \ FromEvent的实例。

来自分类Dev

Symfony 3,如何使用redirectToRoute方法传输URL参数

来自分类Dev

在Fiddler中将2个参数传递给PUT请求的方法

来自分类Dev

可捕获的致命错误:传递给Symfony :: render()的参数3必须是Symfony \ .. \ Response的实例,给定数组

来自分类Dev

Symfony3:服务无法获取参数

来自分类Dev

Symfony2:如何将URL传递给服务(不传递整个路由器服务)

来自分类Dev

将额外参数传递给Symfony2的问题通过$ options形成

来自分类Dev

在Symfony2中上载文件:可捕获的致命错误:参数1传递给

来自分类Dev

For循环,带有传递给Symfony2中的树枝的参数的循环

Related 相关文章

  1. 1

    Symfony2:ContextErrorException:可捕获的致命错误:传递给[...] :: __ construct()的参数1必须实现接口[...]

  2. 2

    symfony 3传递给[some service] :: __ construct()的参数1必须是给定的Doctrine \ ORM \ EntityRepository的[something]实例的实例

  3. 3

    symfony 3传递给[some service] :: __ construct()的参数1必须是给定Doctrine \ ORM \ EntityRepository的[something]实例的实例

  4. 4

    Symfony2:表单在提交时抛出“传递给Doctrine \ Common \ Collections \ ArrayCollection :: __ construct()的参数1必须为数组,给定对象”

  5. 5

    Symfony2:表单在提交时抛出“传递给Doctrine \ Common \ Collections \ ArrayCollection :: __ construct()的参数1必须是给定对象的数组”

  6. 6

    Symfony2如何将URI的参数传递给控制器的Action方法?

  7. 7

    Symfony2如何将URI的参数传递给控制器的Action方法?

  8. 8

    Symfony2服务容器-将普通参数传递给服务构造函数

  9. 9

    Symfony2:服务容器未传递给控制器构造函数

  10. 10

    Symfony2:服务容器未传递给控制器构造函数

  11. 11

    如何在Symfony2中将嵌套参数值传递给服务

  12. 12

    如何从控制器将可选参数传递给Symfony2服务?

  13. 13

    Symfony3,缺少Doctrine \ ORM \ EntityRepository :: __ construct()的参数1,如何以及为什么

  14. 14

    将参数传递给Symfony 3 Form configureOptions

  15. 15

    Symfony 使用 GET 类型将参数传递给方法

  16. 16

    使用Restler 3的依赖项注入容器时将参数值传递给__construct()

  17. 17

    可捕获的致命错误:传递给(...)\ Handler \ FlightHandler :: __ construct()的参数1必须是Symfony \ Component \ Form \ Form的实例

  18. 18

    Symfony2 DI不将服务作为参数传递

  19. 19

    Symfony3 Form组件尝试将null传递给PHP 7中的类型提示方法

  20. 20

    将实体传递给FormType,以便其方法可以在Symfony2的buildForm()中运行

  21. 21

    Symfony 3表单类型内部服务器错误:类型错误:传递给AppBundle的参数1必须是AppBundle \ Form \ FromEvent的实例。

  22. 22

    Symfony 3,如何使用redirectToRoute方法传输URL参数

  23. 23

    在Fiddler中将2个参数传递给PUT请求的方法

  24. 24

    可捕获的致命错误:传递给Symfony :: render()的参数3必须是Symfony \ .. \ Response的实例,给定数组

  25. 25

    Symfony3:服务无法获取参数

  26. 26

    Symfony2:如何将URL传递给服务(不传递整个路由器服务)

  27. 27

    将额外参数传递给Symfony2的问题通过$ options形成

  28. 28

    在Symfony2中上载文件:可捕获的致命错误:参数1传递给

  29. 29

    For循环,带有传递给Symfony2中的树枝的参数的循环

热门标签

归档