首页 > 其他分享 >第7章 Vite的测试和调试

第7章 Vite的测试和调试

时间:2024-07-10 20:27:19浏览次数:10  
标签:vue HelloWorld js Vite 测试 调试

测试和调试是软件开发过程中的重要环节。通过合理的测试策略和调试技巧,可以大幅提高代码的质量和稳定性。本章将介绍如何在 Vite 项目中进行单元测试、集成测试和端到端测试,以及常用的调试方法和工具。

1 单元测试

单元测试是对最小可测试单元进行验证的测试,通常用于测试函数、组件等。我们将使用 Jest 作为测试框架,结合 Vue Test Utils 对 Vue 组件进行测试。

1.1 安装 Jest 和 Vue Test Utils

首先,安装必要的依赖:

npm install --save-dev jest @vue/test-utils vue-jest babel-jest

1.2 配置 Jest

在项目根目录下创建 jest.config.js 文件:

module.exports = {
  moduleFileExtensions: ['js', 'json', 'vue'],
  transform: {
    '^.+\\.vue$': 'vue-jest',
    '^.+\\.js$': 'babel-jest'
  },
  testEnvironment: 'jsdom'
}

在根目录下创建 .babelrc 文件:

{
  "presets": ["@babel/preset-env"]
}

1.3 编写单元测试

创建一个简单的 Vue 组件和对应的测试文件。

组件文件

src/components/HelloWorld.vue

<template>
  <div>
    <h1>{{ msg }}</h1>
    <button @click="increment">Count: {{ count }}</button>
  </div>
</template>

<script>
export default {
  props: {
    msg: String
  },
  data() {
    return {
      count: 0
    }
  },
  methods: {
    increment() {
      this.count++
    }
  }
}
</script>
测试文件

src/components/__tests__/HelloWorld.spec.js

import { shallowMount } from '@vue/test-utils'
import HelloWorld from '../HelloWorld.vue'

describe('HelloWorld.vue', () => {
  it('renders props.msg when passed', () => {
    const msg = 'new message'
    const wrapper = shallowMount(HelloWorld, {
      props: { msg }
    })
    expect(wrapper.text()).toMatch(msg)
  })

  it('increments count when button is clicked', async () => {
    const wrapper = shallowMount(HelloWorld)
    const button = wrapper.find('button')
    await button.trigger('click')
    expect(wrapper.text()).toContain('Count: 1')
  })
})

1.4 运行测试

package.json 中添加测试脚本:

{
  "scripts": {
    "test": "jest"
  }
}

运行测试:

npm test

2 集成测试

集成测试验证多个组件或模块之间的交互。我们仍然可以使用 Jest 和 Vue Test Utils 来进行集成测试。

2.1 编写集成测试

src/components/__tests__/App.spec.js

import { shallowMount } from '@vue/test-utils'
import App from '../../App.vue'
import HelloWorld from '../HelloWorld.vue'

describe('App.vue', () => {
  it('renders HelloWorld component', () => {
    const wrapper = shallowMount(App)
    expect(wrapper.findComponent(HelloWorld).exists()).toBe(true)
  })
})

3 端到端测试

端到端测试(E2E 测试)模拟用户操作,验证应用的整体功能。我们将使用 Cypress 进行 E2E 测试。

3.1 安装 Cypress

安装 Cypress 依赖:

npm install --save-dev cypress

3.2 配置 Cypress

在项目根目录下创建 cypress 文件夹,包含以下目录结构:

cypress/
  ├── fixtures/
  ├── integration/
  ├── plugins/
  └── support/

cypress/plugins/index.js 文件中配置 Cypress:

module.exports = (on, config) => {
  // 配置代码
}

3.3 编写端到端测试

cypress/integration 文件夹中创建测试文件:

cypress/integration/app.spec.js

describe('App', () => {
  it('loads the app and renders HelloWorld component', () => {
    cy.visit('/')
    cy.contains('h1', 'Hello Vite')
  })

  it('increments count when button is clicked', () => {
    cy.visit('/')
    cy.contains('button', 'Count: 0').click()
    cy.contains('button', 'Count: 1')
  })
})

3.4 运行端到端测试

package.json 中添加脚本:

{
  "scripts": {
    "e2e": "cypress open"
  }
}

运行 Cypress:

npm run e2e

4 调试

调试是开发过程中不可或缺的一部分。我们将介绍几种常用的调试方法和工具。

4.1 使用浏览器开发者工具

大多数现代浏览器都提供了强大的开发者工具,允许你设置断点、查看变量、调试代码。

设置断点

打开浏览器开发者工具(通常按 F12Ctrl+Shift+I),在源代码中找到需要调试的文件,点击行号设置断点。

查看变量

在断点处暂停后,可以在控制台中输入变量名查看其值,也可以在“Scope”面板中查看当前上下文中的所有变量。

4.2 使用 Vite 的调试工具

Vite 提供了内置的调试工具,可以帮助你快速定位和解决问题。

启用源映射

确保在 vite.config.js 中启用源映射:

import { defineConfig } from 'vite'

export default defineConfig({
  build: {
    sourcemap: true
  }
})

4.3 使用 VS Code 调试

VS Code 提供了强大的调试功能,配合 Vite 可以实现高效的调试体验。

配置 VS Code 调试

在项目根目录下创建 .vscode/launch.json 文件:

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "chrome",
      "request": "launch",
      "name": "Launch Chrome against localhost",
      "url": "http://localhost:3000",
      "webRoot": "${workspaceFolder}",
      "sourceMaps": true,
      "sourceMapPathOverrides": {
        "webpack:///src/*": "${webRoot}/src/*"
      }
    }
  ]
}

启动 Vite 开发服务器:

npm run dev

在 VS Code 中启动调试:

  1. 打开调试面板 (Ctrl+Shift+D)。
  2. 选择 Launch Chrome against localhost 配置。
  3. 点击“开始调试”按钮。

4.4 使用日志调试

在代码中使用 console.log 打印调试信息是最简单的调试方法。

export default {
  data() {
    return {
      count: 0
    }
  },
  methods: {
    increment() {
      this.count++
      console.log(`Count is now: ${this.count}`)
    }
  }
}

通过本章的学习,你应该掌握了在 Vite 项目中进行单元测试、集成测试和端到端测试的基本方法,以及常用的调试技巧和工具。这些知识将帮助你提高代码的质量和稳定性。下一章将介绍 Vite 的部署和发布策略。

标签:vue,HelloWorld,js,Vite,测试,调试
From: https://blog.csdn.net/imdeity/article/details/140213310

相关文章

  • 性能测试的基本概念
    性能测试:不再像功能测试一样单纯的找Bug,而是去找性能指标。转变思维:在做功能测试、自动化测试时,我们基本都是依托界面进行测试,也称GUI测试,我们的目的就是为了跑通功能、程序,并成功找到Bug。但在做性能测试时,我们大部分是headless模式(所谓的:无头,无界面模式),目的不再是单纯......
  • 2024暑假集训测试2
    前言比赛链接。T1、T4比较简单,打完基本就罚坐了,想了三个小时的T2、T3也没想出来。T1酸碱度中和二分答案加贪心即可,先排序,每瓶可装\(a_i\sima_i+2*m\)。点击查看代码#include<bits/stdc++.h>#defineintlonglong#defineendl'\n'#definesortstable_sortus......
  • 渗透测试-信息收集工具
    domainscan调用subfinder被动收集,调用ksubdomain进行dns验证泛解析,CDN判断获取domain相关的web(host:port)资产,使用webscan扫描webscan支持http/httpsscheme自动判断获取statusCode、contentLength、favicon、iconHash、title、wappalyzer、fin"title自动中文解码j......
  • 在Ubuntu上调试ARMv7的core文件
    1在Ubuntu上调试ARMv7的core文件1.1预备uname-a:获得目前嵌入式系统Linux(none)3.8.11-xilinx#40SMPPREEMPTThuJan1217:02:11CST2023armv7lGNU/Linux安装armv7的交叉编译工具链:sudoapt-getudpatesudoapt-getinstallgcc-arm-linux-gnueabihfgd......
  • Electron-ViteChat桌面端聊天室|electron31+vite5+pinia2仿微信EXE程序
    原创研发Electron31+vue3+elementPlus仿微信客户端聊天应用。使用最新跨平台技术electron31.x+vite5+vue3setup+pinia2+element-plus实战开发电脑版聊天室Exe程序。整个聊天程序界面清爽简约,支持展示/收缩侧边栏、electron新开多窗口、换肤等功能。electron-vitechat......
  • 杂乱的小测试
    Mvvmlight绑定ItemSource▲界面XAML:<Windowx:Class="WpfApp1.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmln......
  • 机器学习策略篇:详解如何使用来自不同分布的数据,进行训练和测试(Training and testing o
    如何使用来自不同分布的数据,进行训练和测试深度学习算法对训练数据的胃口很大,当收集到足够多带标签的数据构成训练集时,算法效果最好,这导致很多团队用尽一切办法收集数据,然后把它们堆到训练集里,让训练的数据量更大,即使有些数据,甚至是大部分数据都来自和开发集、测试集不同的分布。......
  • 案例分享:Qt modbusTcp调试工具(读写Byte、Int、DInt、Real、DReal)(当前v1.0.0)
    前言  西门子PLC、台达PLC、法兰克机床等等多年以前玩得比较多,有tcp/ip通讯也有modbus通讯,modbus又分为网络,485,232等。  医疗项目,焊接机器人项目,工控机床项目,数控项目,物联网项目用的挺多的,将关键的通信技术抽离出来,单独弄成工具。  最近调绞车,遇到了modbustcp,正好有设......
  • Franka Robot 测试网络性能的示例(communication_test.cpp)
    //Copyright(c)2023FrankaRoboticsGmbH//UseofthissourcecodeisgovernedbytheApache-2.0license,seeLICENSE#include<chrono>#include<iostream>#include<thread>#include<franka/active_control.h>#include<frank......
  • 可靠性测试
    什么是可靠性:产品在规定的条件和时间内完成特定的功能,产品维持的性能指标。 可靠性测试目的:(1)发现软件系统在需求、设计、编码、测试、实施等各方面的各种缺陷。(2)为软件的使用和维护提供可靠性数据。(3)确认软件是否达到可靠性的定量要求。 影响可靠性因素:环境、软件规模......