在jest.config.js中配置了
testEnviromentOptions:[
"resources":"usable"
]
运行测试还是报错,
cannot read property testEnviromentOptions of undefined
在jest.config.js中配置了
testEnviromentOptions:[
"resources":"usable"
]
运行测试还是报错,
cannot read property testEnviromentOptions of undefined
首先,我们来看一下 jest 配置文件,默认生成的配置文件只有 preset 属性,另外几个属性我们可以了解一下:
module.exports = {
preset: '@vue/cli-plugin-unit-jest',
moduleFileExtensions: ['js', 'jsx', 'json', 'vue'],
// 相当于loader
transform: {
'^.+\\.vue$': 'vue-jest',
'.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$': 'jest-transform-stub',
'^.+\\.jsx?$': 'babel-jest',
},
transformIgnorePatterns: ['/node_modules/'],
// 相当于alias
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/src/$1',
},
// 生成快照
snapshotSerializers: ['jest-serializer-vue'],
// 单元测试文件路径
testMatch: [
'**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)',
],
testURL: 'http://localhost/',
};
根据参考资料中的 jest.config.js 配置文件,应该是没有 testEnviromentOptions 这个属性的,因此出现了 cannot read property testEnviromentOptions of undefined 错误提示。
如果要进行优化,可以考虑下面几个方面:
1.覆盖率测试 可以使用 jest 的 coverage 配置来对代码的覆盖率进行测试。在 jest.config.js 文件中添加 coverage 相关配置即可:
module.exports = { // ... collectCoverage: true, // 开启覆盖率测试 coverageDirectory: '/coverage/', // 覆盖率测试结果输出路径 coverageReporters: ['html', 'text', 'lcov'], // 覆盖率测试报告格式 // ... };
2.快照测试 快照测试可以用来测试组件渲染时的 DOM 结构是否正确。在组件的 spec 文件中添加类似下面的代码即可:
import { shallowMount } from '@vue/test-utils'; import MyComponent from '@/components/MyComponent.vue';
describe('MyComponent.vue', () => { it('renders correctly', () => { const wrapper = shallowMount(MyComponent); expect(wrapper).toMatchSnapshot(); }); });
3.mock 在测试过程中,有些场景下需要模拟一些数据或者模块的行为。此时,可以使用 jest 提供的 mock 功能。在组件的 spec 文件中添加类似下面的代码即可:
import { mount } from '@vue/test-utils'; import MyComponent from '@/components/MyComponent.vue'; import axios from 'axios';
jest.mock('axios');
describe('MyComponent.vue', () => { it('fetches data when component is mounted', () => { const wrapper = mount(MyComponent); expect(axios.get).toHaveBeenCalled(); }); });
4.其他优化 还有一些其他的优化可以考虑,例如使用 beforeEach 和 afterEach 钩子函数来初始化测试环境,使用只运行一次的 beforeAll 和 afterAll 钩子函数来初始化测试数据等。具体可以根据实际情况来考虑。
总的来说,优化 jest 单元测试配置需要考虑到多个方面,包括覆盖率测试、快照测试、mock、钩子函数等。根据实际情况来选择合适的优化方案。