You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shopware 6插件单元测试无法找到自定义repository服务问题求助

问题根因

Shopware 6 测试环境默认不会自动加载自定义插件的服务定义,你当前的配置仅引入了核心测试引导文件,没有触发你的插件的服务注册逻辑,才会出现自定义repository服务不存在的报错。

解决方案

    1. 测试类必须继承Shopware官方提供的插件测试基类
      不要使用原生PHPUnit的TestCase,改为继承Shopware\Core\Testbench\TestCase,并重写getSupportedPlugins方法主动注册你的插件,示例代码如下:
    protected function getSupportedPlugins(): array
    {
        return array_merge(parent::getSupportedPlugins(), [
            // 替换为你自己的插件类路径、根目录和技术名称
            new \MyPluginNamespace\MyPlugin(true, __DIR__ . '/../../../', 'MyPluginTechnicalName')
        ]);
    }
    

    同时可以在phpunit.xml.dist的<php>块中增加数据库同步配置,确保自定义实体结构能被测试环境识别:

    <env name="SHOPWARE_DB_STRATEGY" value="force"/>
    
    1. 先在test环境完成插件的安装激活
      跑测试前先执行以下命令,确保你的插件在测试环境下处于激活状态,否则内核不会加载插件的服务定义:
    bin/console plugin:install --activate MyPluginTechnicalName --env=test
    
    1. 核对实体定义和服务配置
      确认你的实体定义中entityName设置正确,Shopware会自动为每个合法的自定义实体生成ID为{entityName}.repository的服务,检查你调用的服务ID和实体定义的entityName是否匹配,同时确认插件的Resources/config/services.xml路径和配置规则没有错误。
    1. 可选:修复PHPUnit配置警告(不影响服务加载)
      你当前配置文件用的是PHPUnit7的schema,和你使用的PHPUnit9版本不匹配,执行以下命令即可自动更新配置文件消除警告:
    ./bin/phpunit.sh --migrate-configuration
    

内容的提问来源于stack exchange,提问作者Ezycod

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 01:15:03