当前位置: 首页 > wzjs >正文

广告公司品牌策划网站seo软件

广告公司品牌策划,网站seo软件,笑话小网站模板html,WordPress做大站重生之我在学Vue–第13天 Vue 3 单元测试实战指南 文章目录 重生之我在学Vue--第13天 Vue 3 单元测试实战指南前言一、测试环境搭建1.1 测试框架配置1.2 测试文件结构 二、组件测试实战2.1 基础渲染测试2.2 事件触发测试2.3 异步操作测试 三、Pinia Store测试3.1 Store初始化配…

重生之我在学Vue–第13天 Vue 3 单元测试实战指南

文章目录

  • 重生之我在学Vue--第13天 Vue 3 单元测试实战指南
    • 前言
    • 一、测试环境搭建
      • 1.1 测试框架配置
      • 1.2 测试文件结构
    • 二、组件测试实战
      • 2.1 基础渲染测试
      • 2.2 事件触发测试
      • 2.3 异步操作测试
    • 三、Pinia Store测试
      • 3.1 Store初始化配置
      • 3.2 Action测试用例
      • 3.3 错误处理测试
    • 四、高级测试技巧
      • 4.1 快照测试
      • 4.2 路由状态模拟
      • 4.3 测试覆盖率优化
    • 总结

前言

“未经验证的代码如同未系安全带的飙车,测试就是程序员的主动安全系统。” —— 测试驱动开发哲学

经过12天的开发与优化,我们的任务管理系统已具备完整功能。今天我们将为项目搭建质量防护网,使用Jest+Vue Test Utils实现单元测试全覆盖。

Vue3 官方中文文档传送点: 测试指南

Vue前端成仙之路:Vue 前端成仙之路_野生的程序媛的博客-CSDN博客

GO后端成神之路:Go 后端成神之路_野生的程序媛的博客-CSDN博客

一、测试环境搭建

1.1 测试框架配置

npm install jest @vue/test-utils @types/jest vue-jest@next -D

Jest配置文件(jest.config.js):

module.exports = {preset: '@vue/cli-plugin-unit-jest/presets/typescript-and-babel',testMatch: ['**/__tests__/**/*.[jt]s?(x)'],moduleNameMapper: {'^@/(.*)$': '<rootDir>/src/$1'},collectCoverage: true,coverageReporters: ['html', 'text-summary']
}

1.2 测试文件结构

src/
├─ components/
│  └─ TaskList/
│     ├─ TaskList.vue
│     └─ __tests__/
│        └─ TaskList.spec.ts
└─ store/└─ __tests__/└─ taskStore.spec.ts

二、组件测试实战

2.1 基础渲染测试

// TaskList.spec.ts
import { mount } from '@vue/test-utils'
import TaskList from '../TaskList.vue'describe('TaskList组件测试', () => {const tasks = [{ id: 1, title: '学习Vue3', completed: false },{ id: 2, title: '编写测试用例', completed: true }]test('正确渲染任务列表', () => {const wrapper = mount(TaskList, {props: { tasks }})// 验证渲染数量const items = wrapper.findAll('.task-item')expect(items.length).toBe(tasks.length)// 验证内容展示expect(wrapper.text()).toContain('学习Vue3')})
})

2.2 事件触发测试

test('正确触发删除事件', async () => {const wrapper = mount(TaskList, {props: { tasks }})// 查找第一个删除按钮并点击const deleteBtn = wrapper.find('.delete-btn')await deleteBtn.trigger('click')// 验证emit事件expect(wrapper.emitted('delete-task')).toBeTruthy()expect(wrapper.emitted('delete-task')![0]).toEqual([1])
})

2.3 异步操作测试

test('加载状态显示正确', async () => {const wrapper = mount(TaskList, {props: { tasks: [],loading: true }})expect(wrapper.find('.loading-spinner').exists()).toBe(true)
})

三、Pinia Store测试

3.1 Store初始化配置

import { setActivePinia, createPinia } from 'pinia'
import { useTaskStore } from '@/store/taskStore'beforeEach(() => {setActivePinia(createPinia())
})

3.2 Action测试用例

test('addTask添加新任务', async () => {const store = useTaskStore()const newTask = { title: '新任务' }// 模拟API请求jest.spyOn(axios, 'post').mockResolvedValue({ data: { ...newTask, id: 1 } })await store.addTask(newTask)expect(store.tasks).toHaveLength(1)expect(store.tasks[0].title).toBe('新任务')
})

3.3 错误处理测试

test('deleteTask处理网络错误', async () => {const store = useTaskStore()store.tasks = [{ id: 1, title: '待删除任务', completed: false }]// 模拟API失败jest.spyOn(axios, 'delete').mockRejectedValue(new Error('网络错误'))await expect(store.deleteTask(1)).rejects.toThrow('删除失败')expect(store.tasks).toHaveLength(1) // 确保未删除
})

四、高级测试技巧

4.1 快照测试

test('组件渲染快照', () => {const wrapper = mount(TaskList, {props: { tasks }})expect(wrapper.html()).toMatchSnapshot()
})

4.2 路由状态模拟

import { createRouter, createWebHistory } from 'vue-router'const router = createRouter({history: createWebHistory(),routes: []
})test('带路由的组件测试', async () => {const wrapper = mount(Component, {global: {plugins: [router]}})
})

4.3 测试覆盖率优化

配置package.json:

{"scripts": {"test:coverage": "jest --coverage"}
}

总结

通过今天的测试实战,我们为项目实现了:

  1. 核心组件100%覆盖率:所有关键交互均有测试保障
  2. Store层完整验证:数据流变化可追踪
  3. 错误场景全面覆盖:网络异常等边界情况妥善处理

明日预告:国际化方案落地,让应用走向世界舞台!

http://www.dtcms.com/wzjs/818647.html

相关文章:

  • 模板网站报价明细餐饮客户管理系统
  • 建网站哪家好 优帮云网络营销是什么的产生主要源于网络市场的复杂性
  • 功能网站建设多少钱我想做一个网站怎么做
  • 智慧团建系统官方网站登录注册公司流程和费用l
  • 淘宝客网站建站源码科技网站建设
  • wordpress多重筛选机制wordpress seo博客选哪个主题
  • 创业网站建设怎么样网站建设合同服务范围
  • 天水市建设局企业注册网站英文网站建设模板
  • 天水网站建设公司排名聊城做网站的公司
  • 建立企业网站的意义php 企业网站框架
  • 做网站没灵感中国私企建筑公司十大排名
  • 北京高端建设网站广东建筑企业50强
  • 网站开发客户阿里云案例框架网页模板下载
  • 苏州制作网站的公司哪家好盘锦门户网站制作
  • 三门峡网站设计建设学分银行网站策划书
  • 定制网站建设网上推广方式
  • 做薪酬调查有哪些网站腾讯 wordpress
  • 建设一个网络交友的网站的论文中国建设网站齐齐哈尔市
  • 昆明著名网站外贸网站模板建设
  • 台山网站设计网站开发工资淄博
  • 宁波市建设厅网站首页乡镇网站模板
  • 做淘客必须有自己内部网站吗免费关键词挖掘网站
  • 杭州新站整站seo微信小程序开发流程文档
  • 水产养殖网站模板源码网站改版中 模板
  • 网站中主色调织梦cms wordpress
  • 办公室设计费一般多少钱一平云南网站优化建站
  • 品牌网站建设專註大蝌蚪合肥做网站排名
  • 长春网站建设优化排名在线网站建设机构
  • 国外网站服务器建设个人网站内容
  • 郑州做网站哪家好个人做外贸网站平台有哪些