赞
踩
vue-cli
创建一个项目$vue create vue-test
Manually select features
进行手动选择功能配置:Babel
、TypeScript
、Router
、Unit Testing
:Jest
:In dedicated config files
将各配置信息配置在对应的 config
文件里:- ? Where do you prefer placing config for Babel, PostCSS, ESLint, etc.? (Use arrow keys)
- ❯ In dedicated config files
- In package.json
输入n,不保存预设:
? Save this as a preset for future projects? (y/N) n
创建成功
jest.config.js
默认如下:
- module.exports = {
- preset: "@vue/cli-plugin-unit-jest/presets/typescript-and-babel",
- };
我们可以按实际需求添加其它配置项:
- module.exports = {
- preset: "@vue/cli-plugin-unit-jest/presets/typescript-and-babel",
- testMatch: ["**/tests/unit/**/*.spec.[jt]s?(x)"],
- transformIgnorePatterns: ["<rootDir>/node_modules/"],
- moduleFileExtensions: [
- 'js',
- 'vue'
- ],
- transform: {
- '^.+\\.vue$': '<rootDir>/node_modules/vue-jest',
- '^.+\\.js$': '<rootDir>/node_modules/babel-jest'
- },
- moduleNameMapper: {
- '^@/(.*)$': '<rootDir>/src/$1'
- },
- snapshotSerializers: [
- 'jest-serializer-vue'
- ]
- };
testMatch
匹配哪些文件进行测试transformIgnorePatterns
不进行匹配的目录moduleFileExtensions
告诉Jest
需要匹配的文件后缀transform
匹配到 .vue
文件的时候用 vue-jest
处理, 匹配到.js
文件的时候用 babel-jest 处理moduleNameMapper
处理webpack
的别名,比如:将@
表示 /src
目录snapshotSerializers
将保存的快照测试结果进行序列化,使得其更美观vs code
打开项目你会发现根目录下有一目录test/unit
,里面就有一个已经生成的测试用例。
vue-test 5.png
新建终端:运行单元测试。这里会根据jest.config.js
的testMatch
配置的条件进行运行。当前匹配的是所有tests/unit
下的测试文件
$yarn test:unit
新建一个couter.vue
文件简单的界面,点击按钮数目加1。在tests/unit
目录下新建一个测试文件couter.spec.ts
- //couter.vue
- <template>
- <div>
- <span class="count">{{ count }}</span>
- <button @click="increment">Increment</button>
- </div>
- </template>
-
- <script>
- export default {
- data() {
- return {
- count: 0
- };
- },
- methods: {
- increment() {
- this.count++;
- }
- }
- };
- </script>
- //couter.spec.ts
- import { mount } from "@vue/test-utils";
- import Couter from "@/views/Couter.vue";
-
- describe("Couter.vue", () => {
- const wrapper = mount(Couter);
- it("测试累加", () => {
- wrapper.setData({ count: 13 });
- const button = wrapper.find("button");
- button.trigger("click");
- expect((wrapper.vm as any).count).toBe(14);
- });
- });
所有目前tests/unit
目录下有两个测试文件,如果还用yarn test:unit
命令的话就会跑所有测试文件。那么我们怎么指定运行一个文件呢,看下面命令:
$yarn jest -- **/tests/unit/**/couter.spec.ts
nextTick()。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。