Symfony 尝试为';使用#instanceof#标记条令数据装置;测试';西蒙尼环境4
我正在编写一个symfony4.1restapi,并尝试使用fixture为phpunit测试设置测试数据库 我的问题是,我希望通过为Symfony 尝试为';使用#instanceof#标记条令数据装置;测试';西蒙尼环境4,symfony,service,doctrine,autowired,instanceof,Symfony,Service,Doctrine,Autowired,Instanceof,我正在编写一个symfony4.1restapi,并尝试使用fixture为phpunit测试设置测试数据库 我的问题是,我希望通过为原则:fixtures:load命令提供-e test选项,使fixture能够基于symfony env运行 在阅读了一些文档后,我考虑使用symfony autowiring instanceof functionality和services\u test.yaml文件,但它似乎不起作用 如果我将\u instanceof代码位移动到services.yaml
原则:fixtures:load
命令提供-e test
选项,使fixture能够基于symfony env运行
在阅读了一些文档后,我考虑使用symfony autowiring instanceof functionality和services\u test.yaml
文件,但它似乎不起作用
如果我将\u instanceof
代码位移动到services.yaml
,它可以工作,但当然对所有环境都有效
有人有主意吗?也许我错过了什么。提前感谢您的建议:)
以下是我所做的:
用于标记的接口
services.yaml文件
解决方案(服务测试yaml)
我认为
\u instanceof
只适用于当前文件。因此,您需要在服务\u test.yaml
中自动发现PSR-4装置:
services:
_defaults:
public: true
_instanceof:
App\DataFixtures\BookieTestFixtureInterface:
tags: ['doctrine.fixture.orm']
App\:
resource: '../src/Fixtures'
让我知道它是如何工作的
关于下的
\u instanceof
的范围也有一个类似的问题,但没有回答。非常感谢!这确实是一个正确的解决方案,我只需添加多一点配置,否则它不会将ObjectManager传递到我的设备。我将用完整的答案编辑我的问题。
<?php
namespace App\DataFixtures;
use Doctrine\Common\DataFixtures\AbstractFixture;
use Doctrine\Common\Persistence\ObjectManager;
class UserFixtures extends AbstractFixture implements BookieTestFixtureInterface
{
public function load(ObjectManager $manager)
{
// do some stuff
}
}
services:
_defaults:
public: true
_instanceof:
App\DataFixtures\BookieTestFixtureInterface:
tags: ['doctrine.fixture.orm']
services:
_defaults:
autowire: true
autoconfigure: true
public: false
App\:
resource: '../src/*'
exclude: '../src/{Entity,Migrations,Tests,Kernel.php}'
App\Controller\:
resource: '../src/Controller'
tags: ['controller.service_arguments']
services:
_defaults:
autowire: true
autoconfigure: true
public: true
_instanceof:
App\DataFixtures\BookieTestFixtureInterface:
tags: ['doctrine.fixture.orm']
App\:
resource: '../src/*'
exclude: '../src/{Entity,Migrations,Tests,Kernel.php}'
services:
_defaults:
public: true
_instanceof:
App\DataFixtures\BookieTestFixtureInterface:
tags: ['doctrine.fixture.orm']
App\:
resource: '../src/Fixtures'