vitest 单元测试配合@vue/test-utils 之 axios 篇

这篇具有很好参考价值的文章主要介绍了vitest 单元测试配合@vue/test-utils 之 axios 篇。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

what is vitest & VueTestUtils & axios

vitest 是由 vite 提供支持的极速单元测试框架,VueTestUtils 是 Vue.js 的官方测试实用程序库,Axios 是一个基于 promise 的网络请求库,以上均为各自官网对其的描述

demo

项目中使用 axios 是非常常见的,所以我们可以对他做一个单元测试,在 test-utils 的文档中提到除了 jest.mock()还可以使用axios-mock-adapter,其实我们可以使用 vitest 的 vi.mock()来完成,但是翻看了axios-mock-adapter库的示例后,明白了官方的推荐并不是不无道理,所以此篇 demo 引入该库来完成

// component
<script setup lang="ts">
import { ref } from 'vue'
import MockAdapter from 'axios-mock-adapter'
import axios from 'axios'

const name = ref('李四')
const mock = new MockAdapter(axios)
const resulst = { name: '张三', age: 18 }
mock.onGet('/user').reply(200, resulst)
const handleRequestChange = () => {
  axios.get('/user').then(res => {
    name.value = res.data.name
  })
}
</script>

<template>
  <span>{{ name }}</span>
  <button @click="handleRequestChange">get</button>
</template>
import { describe, it, expect, vi } from 'vitest'
import { mount, flushPromises } from '@vue/test-utils'
import axios from 'axios'
import RequestService from '@/views/RequestService.vue'
describe('axios-tets', () => {
  it('tets1', async () => {
    const spy = vi.spyOn(axios, 'get')
    const wrapper = mount(RequestService)
    await wrapper.find('button').trigger('click')
    expect(spy).toHaveBeenCalledTimes(1)
    expect(spy).toHaveBeenCalledWith('/user')
  })
  it('test2', async () => {
    const wrapper = mount(RequestService)
    expect(wrapper.find('span').text()).toContain('李四')
    await wrapper.find('button').trigger('click')
    await flushPromises()
    expect(wrapper.find('span').text()).toContain('张三')
  })
})
  1. demo 由两部分组成,组件和测试文件
  2. 组件的逻辑非常简单,使用axios-mock-adapter创建一个 mock 数据,模拟 get 请求,页面有一个初始值,按钮按下发送网络请求,更新页面的数据
  3. 测试文件有两组测试,第一组和上一篇测试 router 里面的编程式路由很相似,首先监听 axios 的 get 方法,然后挂载组件,触发组件的点击事件,然后断言函数是否被调用过指定次数、是否调用过并且传入指定参数
  4. 第二组就更加熟悉了,之前的三篇都做过类似的测试,挂载组件然后查找元素,断言元素的文本是否与预期值一致,flushPromises方法会刷新所有已解决的 promise 程序

tips

同样的这是一个简单的 demo,但它还是有很多值得注意的知识点

  • axios-mock-adapter 一个 axios 适配器,可以轻松模拟请求,文中只用到了 get 请求,但其实他有着丰富的功能,无论是单元测试还是实际开发中后端没有开发出接口需要自己模拟数据时都很适用,推荐~~
  • vi.mock 可以使用 vi.spyOn()监听 axios 的 get 请求来跟踪 mock 执行
const result = {name: '张三', age: 18}
vi.spyOn(axios, 'get').mockResolvedValue(result)
// mockResolvedValue 异步函数被调用时接收一个resolve值

其他文章

vitest 单元测试配合@vue/test-utils 之组件单元测试篇
vitest 单元测试配合@vue/test-utils 之 pinia 篇
vitest 单元测试配合@vue/test-utils 之 router 篇文章来源地址https://www.toymoban.com/news/detail-827518.html

到了这里,关于vitest 单元测试配合@vue/test-utils 之 axios 篇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue前端自动化测试-Vue Test Utils

    vue-test-utils是vue官方的单元测试框架,提供了一系列非常方便的工具,使我们更轻松地为vue构建的应用来编写单元测试。主流的JavaScript测试运行器有很多,但vue-test-utils都能支持。它是与测试运行器无关的。 通过脚手架 vue-cli 来新建项目的时候,如果选择了 Unit Testing 单元测

    2024年02月13日
    浏览(30)
  • 前端自动化测试(二)Vue Test Utils + Jest

    项目会从快速迭代走向以维护为主的状态,因此引入自动化测试能有效减少人工维成本 。 自动化的收益 = 迭代次数 * 全手动执行成本 - 首次自动化成本 - 维护次数 * 维护成本 对于自动化测试,相对于发现未知问题,更倾向于避免可能的问题。 (1) 单元测试 单元测试(unit t

    2024年02月08日
    浏览(28)
  • Vitest 单元测试

    自动化测试是指 使用独立于待测软件的其他软件或程序来自动执行测试,比较实际结果与预期 并生成测试报告这一过程。在测试流程已经确定后,测试自动化可以自动执行的一些重复性但必要的测试工作。也可以完成手动测试几乎不可能完成的测试。 1. 基于图形用户交互界

    2024年01月21日
    浏览(30)
  • Vitest 单元测试方案

     🔥 交流讨论: 欢迎加入我们一起学习! 🔥 资源分享 : 耗时200+小时精选的「软件测试」资料包 🔥  教程推荐: 火遍全网的《软件测试》教程   📢 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 简介 Vitest 是一个面向 Vite 的极快的 单元测试 框架。它利用了 Vite 的

    2024年04月08日
    浏览(26)
  • Vitest 单元测试详解

    一、 自动化测试 (TDD)的一些概念: 自动化测试(TDD)概念: 自动化测试是指 使用独立于待测软件的其他软件或程序来自动执行测试,比较实际结果与预期 并生成测试报告这一过程。在测试流程已经确定后,测试自动化可以自动执行的一些重复性但必要的测试工作。也可

    2024年02月20日
    浏览(21)
  • 年轻人的第一款单元测试框架———vitest

    一款合格的开源项目是避免不了单元测试的,这也是这几年单元测试的热度居高不下的原因。而在今年的 state of js 2022 中,我们可以看见在 代码库层级列表 中, vitest 飞升一跃,直接到了第二名,仅次于同门师兄弟 vite ,而 element plus unocss 等知名开源项目都采用了vitest进行单

    2024年01月17日
    浏览(35)
  • 【vitest 单元测试】如何蹭 ant-design-web3 的PR

    这篇文章分享单测经验,希望你能收获到有用的单测知识或者pr思路,填补单测的过程可以深刻理解组件内部的每一个流程,相信一定有所收获。 最近刚好在做一些单测覆盖的工作,在排查执行不到的地方的过程,可以梳理整个组件执行的脉络,甚至发现一些可以优化组件的

    2024年01月16日
    浏览(26)
  • GO——单元测试(test)

    go test用来做什么 做单元测试,测试函数是否符合预期 go test在哪个包 testing 如何使用 参考: https://geektutu.com/post/quick-go-test.html 以 my_func.go 中的Add方法为例 在同一个文件夹下添加my_func_test.go文件 测试文件以_test.go为结尾 里面的测试方法以Test开头,但是不一定是要跟方法名,

    2024年01月20日
    浏览(38)
  • 仿真与测试:单元测试与Test Harness

    本文描述单元测试的概念,以及Test Harness建立的方法和简单的单元测试过程。 单元测试,简单来说就是在Simulink模型中只测试一小部分单元的功能。关于单元测试的概念网上有很多资料了,这里不再赘述。博主从实际工作经验的角度来谈谈单元测试的价值。 举个简单的例子,

    2024年02月04日
    浏览(36)
  • 使用Simulink Test进行单元测试

    本文摘要:主要介绍如何利用Simulink Test工具箱,对模型进行单元测试。内容包括,如何创建Test Harness模型,如何自动生成excel格式的测试用例模板来创建测试用例,如何手动填写excel格式的测试用例模板来手动创建测试用例。 单元测试的目的 创建完模型后,我们需要验证模型

    2024年02月16日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包