如何通过shopware-docker配置Shopware 6自定义插件Jest单元测试环境
为Shopware 6自定义插件配置Jest测试环境(基于shopware-docker)
一、先理清shopware-docker的模块含义
- Module: base:所有Shopware版本通用的基础环境模块,负责提供Docker运行的核心依赖(如Nginx、MySQL等),是必须安装的基础模块。
- Module: classic:仅针对Shopware 5的专属模块,适配Shopware 5的架构与运行需求,Shopware 6用户不需要安装。
- Module: platform:专门适配Shopware 6的模块,因为Shopware 6采用Platform架构,Shopware 6环境必须搭配
base + platform模块使用。
确认自身安装的模块
执行宿主机命令:
swdc module list
或者查看shopware-docker的配置文件(路径通常为~/.config/shopware-docker/config.json),在modules字段中可以看到已安装的模块列表。
二、解决Jest找不到测试文件的问题
1. 确保测试文件的路径与命名符合规范
自定义插件的Vue测试文件必须放在插件目录的以下路径:
<你的插件目录>/src/Resources/app/administration/test
文件名需要匹配Jest的默认规则,比如:
YourComponent.spec.jsYourComponent.test.js
2. 指定测试路径执行admin-jest命令
swdc admin-jest默认会扫描Shopware核心的测试文件,要让它识别自定义插件的测试,需要显式指定插件的测试目录:
swdc admin-jest <project-name> -- <你的插件目录>/src/Resources/app/administration/test
(注意--是分隔符,用来传递参数给容器内的Jest命令)
3. 为插件添加自定义Jest配置(可选)
如果需要更灵活的测试配置,可以在插件根目录创建jest.config.js文件,示例配置:
module.exports = { rootDir: './src/Resources/app/administration', testMatch: [ '<rootDir>/test/**/*.spec.js', '<rootDir>/test/**/*.test.js' ], moduleNameMapper: { '^@shopware-ag/admin-extension-sdk$': '<rootDir>/node_modules/@shopware-ag/admin-extension-sdk', '^vue$': 'vue/dist/vue.common.js' }, moduleFileExtensions: ['js', 'vue'], transform: { '^.+\\.js$': 'babel-jest', '^.+\\.vue$': 'vue-jest' } };
然后执行命令时指定配置文件:
swdc admin-jest <project-name> -- --config=<你的插件目录>/jest.config.js
三、解决composer run admin:create:test命令不存在的问题
这个命令是Shopware核心的Composer脚本,不能直接在宿主机执行,需要通过shopware-docker进入容器内的项目环境执行:
swdc exec <project-name> composer run admin:create:test
或者先进入容器终端:
swdc ssh <project-name>
然后在容器内的项目根目录执行:
composer run admin:create:test
内容的提问来源于stack exchange,提问作者rammi22
相关产品推荐
相关产品推荐

