首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Fixtures进行依赖注入

使用Fixtures进行依赖注入
EN

Stack Overflow用户
提问于 2018-07-07 07:40:49
回答 1查看 906关注 0票数 2

我正在使用Symfony 4构建一个web应用程序,我正在尝试从我的功能测试中加载fixture。我已经创建了一个fixture类:

代码语言:javascript
复制
<?php

namespace App\DataFixtures;

use App\Entity\User;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Common\Persistence\ObjectManager;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;

class TestFixtures extends Fixture
{
private $encoder;

public function __construct(UserPasswordEncoderInterface $encoder)
{
    $this->encoder = $encoder;
}

public function load(ObjectManager $em)
{
    $user = new User();
    $user->setUsername('user@gamil.com');
    $user->setIsActive(true);
    $user->setEmail('user@gmail.com');
    $user->setFirstName('John');
    $user->setLastName('Doe');
    $user->setSchool($school);
    $user->setRoles(['ROLE_USER']);
    $password = $this->encoder->encodePassword($user, 'pass1234');
    $user->setPassword($password);

    $em->persist($user);
    $em->flush();

    return $user;
}

}

我已经将services_test.yaml配置为将服务传递给fixture:

代码语言:javascript
复制
services:
_defaults:
    public: true

App\DataFixtures\TestFixtures:
    arguments: ['@security.password_encoder']

然而,当我尝试运行我的测试时,我得到了以下错误:

ArgumentCountError:函数App\DataFixtures\TestFixtures::__construct()的参数太少,在第38行的/Development/app/src/Test/ApiTestCase.php中传递了0个参数,应恰好为1个

这是我的测试用例中的函数:

代码语言:javascript
复制
protected function setUp()
{
    $this->client = self::$staticClient;
    $this->purgeDatabase();

    $em = $this->getEntityManager();
    $fixture = new TestFixtures();
    $fixture->load($em);
}

提前感谢您对此提供的任何建议…

EN

回答 1

Stack Overflow用户

发布于 2018-07-07 18:25:24

您正在实例化一个类:$fixture = new TestFixtures();,而您需要将其作为服务。您需要在encoder是实例化的类或编码器类的模拟的情况下执行此$fixture = new TestFixtures(encoder);,或者从客户端的容器中检索TestFixtures类。我不是很确定,但可以试试$fixture = $this->client->getContainer()->get('App\DataFixtures\TestFixtures');

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51218794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档