uni-app 自动化测试辅助插件,按文档配置jest.config.js后依旧无法使用自定义基座测试

uni-app 自动化测试辅助插件,按文档配置jest.config.js后依旧无法使用自定义基座测试

测试过的手机:

荣耀v30 鸿蒙3

示例代码:

jest.config.js文件代码

module.exports = {  
    testTimeout: 10000,  
    reporters: [  
        'default'  
    ],  
    watchPathIgnorePatterns: ['/node_modules/', '/dist/', '/.git/'],  
    moduleFileExtensions: ['js', 'json'],  
    rootDir: __dirname,  
    testMatch: ["<rootDir>/pages/**/*test.[jt]s?(x)"],  
    testPathIgnorePatterns: ['/node_modules/'],  
    testEnvironmentOptions: {  
        compile: true,  
        "app-plus": { // 需要安装 HBuilderX  
            android: {  
                appid: "__UNI__AA3CE00", //自定义基座测试需配置manifest.json中的appid  
                package: "uni.UNIAA3CE00", //自定义基座测试需配置Android包名  
                executablePath: "E:\\Hello uni-app\\unpackage\\debug\\android_debug.apk"   // apk 目录或自定义调试基座包路径  
            }  
        }  

    }  
}

env.js文件代码

module.exports = {  
    "is-custom-runtime": false,  
    "compile": true,  
    "h5": {  
        "options": {  
            "headless": true  
        },  
        "executablePath": ""  
    },  
    "mp-weixin": {  
        "port": 9420,  
        "account": "",  
        "args": "",  
        "cwd": "",  
        "launch": true,  
        "teardown": "disconnect",  
        "remote": false,  
        "executablePath": ""  
    },  
    "app-plus": {  
        "android": {  
            "id": "192.168.10.5",  
            "executablePath": "E:\\HBuilderX\\HBuilderX\\plugins\\launcher\\base\\android_base.apk"  
        },  
        "version": "E:\\HBuilderX\\HBuilderX\\plugins\\launcher\\base\\version.txt",  
        "ios": {  
            "id": "",  
            "executablePath": ""  
        }  
    }  
}

操作步骤:

下载Hello uniapp模版,打包自定义基座,修改jest.config.js的appid、package、executablePath三个属性,运行自动化插件到android

预期结果:

使用自定义基座进行自动化测试

实际结果:

使用默认基座进行自动化测试

bug描述:

按文档配置jest.config.js的appid、package、executablePath三个属性后依旧不会启动自定义基座进行自动化测试。在Hello uni-app中依旧有此问题


更多关于uni-app 自动化测试辅助插件,按文档配置jest.config.js后依旧无法使用自定义基座测试的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

怎么样 拟解决了吗

更多关于uni-app 自动化测试辅助插件,按文档配置jest.config.js后依旧无法使用自定义基座测试的实战教程也可以访问 https://www.itying.com/category-93-b0.html


https://ask.dcloud.net.cn/article/41545这有解决办法。记得更新插件到最新版本,在env.js里改,不要在jest.config.js里改 这是相关的文档https://uniapp.dcloud.net.cn/worktile/auto/hbuilderx-extension/#env-js-uni-test-custom-env

在使用 Uni-app 进行自动化测试时,如果按照文档配置了 jest.config.js 后仍然无法使用自定义基座进行测试,可能是由于以下原因导致的。以下是一些常见问题和解决方法:


1. 确保正确配置 jest.config.js

  • 确保 jest.config.js 中的配置项正确无误,特别是 presettestEnvironment
  • 示例配置:
    module.exports = {
      preset: '[@vue](/user/vue)/cli-plugin-unit-jest',
      testEnvironment: 'jsdom',
      transform: {
        '^.+\\.vue$': 'vue-jest',
        '^.+\\.js$': 'babel-jest',
      },
      moduleNameMapper: {
        '^@/(.*)$': '<rootDir>/src/$1',
      },
      testMatch: ['**/tests/unit/**/*.spec.js'],
    };
    

2. 检查自定义基座的配置

  • 确保自定义基座已经正确生成,并且在测试时能够正常加载。
  • 如果使用 HBuilderX 生成自定义基座,确保生成的基座文件路径正确,并且在测试脚本中正确引用。

3. 模拟 Uni-app 的运行环境

  • Jest 默认是在 Node.js 环境中运行,而 Uni-app 的某些 API(如 uni.request)依赖于真实的运行环境。
  • 使用 jest.mockjest.spyOn 来模拟 Uni-app 的 API。
  • 示例:
    jest.mock('uni-app', () => ({
      request: jest.fn(() => Promise.resolve({ data: {} })),
    }));
    

4. 检查依赖版本

  • 确保 jestvue-jestbabel-jest 等依赖的版本与 Uni-app 兼容。
  • 检查 package.json 中的依赖版本是否满足要求。

5. 运行测试时指定环境

  • 如果测试脚本依赖于特定的环境变量,确保在运行测试时正确设置环境变量。
  • 示例:
    NODE_ENV=test jest
    

6. 调试测试脚本

  • 在测试脚本中添加 console.log 或使用调试工具(如 node --inspect-brk)来检查测试流程。
  • 确保测试脚本能够正确加载自定义基座。

7. 确保测试文件结构正确

  • 确保测试文件放置在正确的目录下,并且文件名符合 Jest 的匹配规则(如 *.spec.js*.test.js)。
  • 示例:
    project/
    ├── src/
    ├── tests/
    │   └── unit/
    │       └── example.spec.js
    ├── jest.config.js
    └── package.json
    

8. 检查 Uni-app 的插件配置

  • 如果使用了 Uni-app 的插件(如 uni-simple-router),确保插件在测试环境中正确初始化。
  • 使用 jest.mock 或手动初始化插件。

9. 参考官方文档和社区

  • 查看 Uni-app 官方文档中关于自动化测试的部分,确保没有遗漏关键步骤。
  • 在 Uni-app 社区或 GitHub Issues 中搜索类似问题,寻找解决方案。

10. 示例测试脚本

以下是一个简单的测试脚本示例:

import { mount } from '[@vue](/user/vue)/test-utils';
import MyComponent from '@/components/MyComponent.vue';

describe('MyComponent', () => {
  it('renders correctly', () => {
    const wrapper = mount(MyComponent);
    expect(wrapper.text()).toContain('Hello Uni-app');
  });
});
回到顶部