年轻人的第一款单元测试框架———vitest

这篇具有很好参考价值的文章主要介绍了年轻人的第一款单元测试框架———vitest。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

vitest,职场经验,程序员,软件测试,单元测试,压力测试,职场和发展,软件测试,程序人生

不仅仅是在满意度上拔得头筹,vitest相比jest来说,你几乎无需做任何的配置:

  • 开箱即用的 TypeScript / JSX 支持
  • 支持测试 Vue、React、Lit 等框架中的组件
  • jest友好(兼容jest的快照测试)

这对于新人来学习单元测试来说无疑是非常友好的,并且vitest与 Vite 通用的配置、转换器、解析器和插件,对vite生态支持十分友好,这对于一些日常使用vite的人来说就更爽了😂

Vitest 旨在将自己定位为 Vite 项目的首选测试框架,即使对于不使用 Vite 的项目也是一个可靠的替代方案。

安装并配置

这里我还是选择我心目中最好的包管理器了吧:

pnpm add -D vitest

由于vitest和vite是统一的配置,所以你无需再另写一个文件,直接在vite.congi.ts中进行配置即可:

/// <reference types="vitest" />
import { defineConfig } from "vitest/config";
export default defineConfig({
  test: {
    // ...
  },
});

注意,这里由于我们是要进行配置vite本身,所以需要在顶端加上三斜线命令

再向package.json中加上如下命令即可开启我们的单元测试之旅:

{
  "scripts": {
    "test": "vitest",
    "coverage": "vitest run --coverage"
  }
}

简单感受一下单元测试的魅力:

对于没怎么接触过单元测试的同学,我们可以用个简短的例子来进行演示,首先让我们定义一个sum.ts:

export default function sum(...numbers:number[]){
    return numbers.reduce((total,number)=>total+number,0)
}

在写完这个函数后,我们再定义一个测试文件,命名为sum.test.ts:

import sum from './sum'
import {describe,expect,it} from "vitest"
​
describe("#sum",()=>{
    it("returns 0 with no numbers",()=>{
        expect(sum()).toBe(0)
    })
})
  • describe 描述, decribe会形成一个作用域
  • it 定义了一组关于测试期望的方法,它接收测试名称和一个含有测试期望的函数
  • expect用来创建断言
  • toBe 可用于断言基础对象是否相等

运行pnpm run test便可得到如下结果:

vitest,职场经验,程序员,软件测试,单元测试,压力测试,职场和发展,软件测试,程序人生

那如果我们将sum.ts的结果从0改为1时,它便会立刻报错,并且提醒我们ExpectedReceived之前的区别,让我们能够快速定位原代码的错误位置

vitest,职场经验,程序员,软件测试,单元测试,压力测试,职场和发展,软件测试,程序人生

实战演示

注册组件

接下来我们进行实战演示,看看在实际的项目开发中vitest又应该如何使用,这里就拿测试组件库来当做例子吧,举个例子,我注册了一个Link组件:

import { defineComponent, PropType, ref } from "vue";
import "uno.css";
​
export type IType = 'default' | 'primary' | 'success' | 'warning' | 'danger'| 'info'
export type IColor = 'black' | 'blue' | 'green' | 'yellow'| 'red' | 'gray'
export const props = {
  type: {
    type: String as PropType<IType>,
    default: "default",
  },
  color: {
    type: String as PropType<IColor>,
    default: "black",
  },
  plain: {
    type: Boolean,
    default: true,
  },
  href: {
    type: String,
    required: true,
  },
} as const;
​
export default defineComponent({
  name: "CLink",
  props,
  setup(props, { slots }) {
        return () => (
      <a
      class={`
        text-${props.plain ? props.color + "-500" : "white"}
        hover:text-${props.color}-400
        cursor-pointer
        text-lg
        hover:text-white
        transition duration-300 ease-in-out transform hover:scale-105
        mx-1
        decoration-none
        `}
      href={props.href}      
    >
      {slots.default ? slots.default() : 'Link'}
    </a>
    );    
  },
});

这时候我想要对该组件进行单元测试应该怎么做?这时候我们应该明白自己应该测试什么,才在vitest文档中找寻对应的API;比如这时候我想要知道我的组件是否成功渲染上了,这时候就可以去文档查询,这里我们还是选择expect来进行判断,看看是否将Link组件成功的渲染上了

引入Vue Test Utils

但这个时候我们不能直接就进行组件的单元测试,vitest本身是不支持单元组件测试的,需要安装Vue Test Utils配合vitest才可进行,我们安装一下:

pnpm add @vue/test-utils -D

shallowMount方法是Vue Test Utils库中的一个方法,它可以在测试环境中挂载一个Vue组件,并返回一个包装器对象,该对象可以用于访问组件的一些属性和方法,并且由于它是浅渲染,意味着它只会渲染当前组件,而不会渲染它的子组件。这对于单元测试来说很有用,因为它允许您专注于当前组件的行为,并避免与子组件的行为产生干扰。

搭配shallowMount方法对组件进行一个挂载,将Link组件挂载到测试环境中

测试组件是否渲染成功

我们引入组件后,再导入describe expect test方法,对是否渲染成功进行判断,由于原组件当中我们对link组件定义了不同的颜色,这里我们直接判断默认颜色是否为黑色即可

import Link from '../src/link/Link'
import { shallowMount } from '@vue/test-utils'
import { describe, expect, test } from 'vitest'
​
//使用shallowMount()方法挂载组件,并使用expect断言方法来检验组件的渲染是否正确
describe('Link', () => {
    test("mount @vue/test-utils", () => {
        const wrapper = shallowMount(Link, {
            slots: {
                default: 'Link'
            }
        });
​
        //断言
        expect(wrapper.text()).toBe("Link")
    })
})
​
//对组件颜色进行测试,测试默认link颜色
describe("Link", () => {
    test("default color is black", () => {
        // 使用 shallowMount 方法挂载组件
        const wrapper = shallowMount(Link);
​
        // 断言组件默认颜色是否是 black
        expect(wrapper.props().color).toBe("black");
    });
});

运行测试:

vitest,职场经验,程序员,软件测试,单元测试,压力测试,职场和发展,软件测试,程序人生

组件渲染成功,我们成功完成了一个组件的基本测试

总结

vitest无疑是一款优秀的单元测试框架,他所拥有的的不仅仅是和vite一样的快,还有简单易上手的特色,他还有着庞大的vue生态在背后做着支撑,而现在单元测试热度越来越高,选择vitest当做自己的入门框架,是再合适不过了,如果你想查看更多的单元测试在组件库上的应用,欢迎查看我的项目:github.com/isolcat/Cat… 如果能帮到你,还请点个star😀

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

vitest,职场经验,程序员,软件测试,单元测试,压力测试,职场和发展,软件测试,程序人生

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

下方进去可以自行获取一份完整的软件测试视频教程,我也曾靠它涨薪 【保证100%免费】

vitest,职场经验,程序员,软件测试,单元测试,压力测试,职场和发展,软件测试,程序人生文章来源地址https://www.toymoban.com/news/detail-795719.html

到了这里,关于年轻人的第一款单元测试框架———vitest的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 我做了10年的测试,由衷的建议年轻人别入这行了...

    两天前,有个做功能测试7年的同事被裁员了。这位老哥已经做到了团队中的骨干了,人又踏实,结果没想到刚刚踏入互联网“老龄化”大关,就被公司给无情优化了。 现在他想找同类型的工作,薪资也一直被压,考虑转行转型的话,上升空间又窄。昨天还在指点江山,今天

    2024年02月12日
    浏览(37)
  • 程序人生:4年测试在岗,薪资却被刚招来的年轻人超过了...

    最近和一位同行朋友聊天,一开始大家也没有谈工作,毕竟是出来聚聚,放松一下,吃饭的时候,喝了点小酒,酒过三巡,这个朋友开始诉苦水,大概意思嘞,我给大家概况一下: 他在目前公司已经工作4年了,在岗听他说是兢兢业业,很少请假,甚至迟到生病都很少,任务

    2023年04月11日
    浏览(34)
  • 最新年轻人副业赚钱攻略

    最近几年,随着互联网的快速发展和社会变革的加速,年轻人副业赚钱的需求也越来越大。无论是为了增加收入、提升个人能力还是实现自我价值,年轻人们都纷纷开始寻找副业赚钱的机会。 那么,如何才能在副业赚钱中脱颖而出呢?本文将从几个方面给出一些建议。 第一

    2024年02月12日
    浏览(45)
  • 年轻人存款难题:挑战与努力

    年轻人存款难题:挑战与努力 近日,一项调查显示“大约五分之一的年轻人存款在一万元以内。10万元存款是一个‘坎’,存款超过10万就会超过53.7%的人。”这一调查引发了广泛的关注和讨论,将“年轻人”和“存款”两个词融合在一起。对于年轻人而言,存款难吗?从以下

    2024年02月15日
    浏览(37)
  • 养生的年轻人,自己给自己“治病”

    【潮汐商业评论/原创】 “最近嘴周总长痘,应该是上火了,我这就下单点金银花露喝。”对于长痘这件事,Anna的第一反应就是“内调”。 “针对性护肤和涂药这些方法治标不治本,就算用完痘痘不泛红且瘪了,身体里的问题没解决,过阵子又会长出来。”沉迷养生的Anna认

    2024年02月12日
    浏览(43)
  • 多少年轻人,被赛博美女逼成了AI侦探

    赶紧自查。 不知从什么时候开始,社交媒体平台上的美女账号越来越多了。 她们的一颦一笑都精致到头发丝,有时成为穿着套头卫衣深情望向镜头的纯情女大,有时又变身元气活泼的氧气美人;她们对摄影、音乐、旅行、护肤、养生都有自己的见解,也能说出让屏幕另一端

    2024年02月21日
    浏览(44)
  • 论年轻人拥有的资源和对时间的合理估值

    我们来看这样一件事情,小刘同学要去北大医院看病,坐地铁过去 5 块钱,耗费1个小时;打车过去35块钱,耗费40分钟。于是小刘同学还有科研任务和组会汇报要做,于是选择了打车去医院。 和坐地铁相比,小刘同学选择打车,好处是节省了25分钟的时间,以及路上的舒适;

    2024年02月13日
    浏览(38)
  • AI工程师眼中的未来 | 年轻人如何求职选方向

    一个人的命运不仅要看个人的奋斗 也要看历史的选择 如果能顺应未来的趋势选择对了方向 就能让财富巨增瞬间起飞 但是如果选择错了方向 随着社会的发展 有很多工作的机会会渐渐的消失 而我们自己也会更容易被社会所淘汰 所以未来的趋势是什么 我们应该如何选择不同的

    2024年02月10日
    浏览(52)
  • AIGC+开放式社交,为年轻人注入了新的“Soul”?

    5月21日全国助残日,Soul App举办了一场与众不同的线上公益活动,邀请视障用户担任“见习解忧师”,诉说世界更多角落“不完美”的故事,展示人生更多可能,传递温暖与爱。 参与此次派对的“见习解忧师”都是Soul平台上充满正能量,并且拥有“野生解忧师”经历的用户。

    2024年02月11日
    浏览(34)
  • 旅游有哪些好玩的地方? 今天用python分析适合年轻人的旅游攻略

    前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 “旅”是旅行,外出,即为了实现某一目的而在空间上从甲地到乙地的行进过程; “游”是外出游览、观光、娱乐,即为达到这些目的所作的旅行。 二者合起来即旅游。所以,旅游不但有“行”,且有观光、娱乐含义。 知识点

    2024年02月07日
    浏览(49)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包