如何用Vue-cli在Vue.js项目中启动TDD(测试驱动开发)

【Vue】单元测试(Jest/Vue Test Utils) {{ product.price }}元加入购物车 阅读详情

image.png

通常,使用测试驱动开发(TDD)最困难的部分是开始。你必须下载带有奇怪依赖项的软件包,让测试套件与你的构建系统协同工作,然后你必须弄清楚如何编写一个测试!难怪这么多的开发者在你提起它的时候就开始跑开了。

但是,你不是一个普通的开发者。你就可以开始就使用TDD与Vue,所以你可以确信你的代码是完全如预期的。现在我们一起在一个新的Vue项目开始测试工作,通过默认的测试,然后添加一些我们自己想做的。

设置

启动TDD的最简单方法是使用Vue-cli工具。如果你还没有使用过它,Vue-cli工具提供了你从命令行开始进行一个新的Vue项目的方法。

当你使用Vue-cli脚手架启动项目,所有你需要做的就是按照提示然后测试会自动为你设置。这有多容易?让我们走过这个过程,这样我们就可以确切地看到如何去做。

第一步是安装Vue-cli的工具,如果你还没有。使用npm,你可以打开你的终端运行npm install -g vue-cli安装它。

在创建项目之前,我们需要选择一个模板。Vue-cli给我们几个不同的模板选项如WebPack,browserify,PWA,simple。他们每个都有自己独特的设置,我会让你选择最适合你的。请注意,“sample”版本不包括测试。在本教程中,我将使用WebPack模板。

现在,浏览到你想创建新的Vue项目所在的目录。在这里你可以运行vue init 。Vue-cli工具将提示您提供一系列的关于项目的问题,像这样:
vue-tdd-1.png

你看,我已经接受了大部分默认脚手架设置,但我关掉Vue-router因为我们暂时不需要它。你选择什么取决于你的项目,但请确保启用单元测试!

当你启用单元测试时,你将被要求选择一个测试运行器。
vue-tdd-2.png
我选择Karma和Mocha,因为那是我所熟悉的。但是,我听说过很多关于Jest的东西,我一定很快就想试试。

在那之后,Vue-cli会问你,如果你想与Nightwatch建立端到端的测试。这有点超出了“入门”教程的范围,所以我们现在不说了。最后,选择是否运行run npm 或者yarn 安装后,它会为您生成项目。

哦,我们有了一个新的测试,已经为我们构建了Vue项目!如果你的cd到您的项目和运行新的运行测试,我们可以看到,Vue-cli已经包括我们的项目和他们通过的一些测试。

看看情况

现在我们都准备好了,让我们四处看看,看看我们的项目是什么样子。我们的文件结构应该如下所示:
vue-tdd-3.png

我们可以看到,Vue-cli做了大量的工作,我们!虽然这里有很多内容,但对于本教程,我们只关心测试和SRC目录。
vue-tdd-4.png

在src中,我们可以看到,我们有两个Vue组件和main.js文件。然后,在测试中,我们可以看到一些测试设置文件和我们的规格目录。这是我们写测试的地方。让我们看看里面,看看helloworld.spec.js中有什么。

vue-tdd-5.png

让我们一块一块地把这个文件打开。在最开始,我们引入Vue和HelloWorld的组件可以用在测试。接下来,我们使用describe()功能,封装测试断言。我们的主张是在it()函数中定义。这是我们可以看到组件测试的地方。

如果你是新的测试,这可能是一个困难的概念包装你的脑海中。我喜欢思考的是,我们的应用程序的测试就像一个大标准化测试,我们都在最初阶段。每个describe()函数是一个不同的主题,然后每个it**()**功能测试包含一个问题。随着你对测试越来越熟悉,我相信你会想出自己编写测试的内容。

回到HelloWorld.spec.js,我们知道我们的“主体”是helloworld.vue和我们的测试问题,应该给予它正确的内容。那么,我们怎么做呢?

首先,我们使用Vue.extend(HelloWorld)通过Vue函数在HelloWorld类的基础上构建一个之类。接下来,我们实例化HelloWorld这样我们可以与它进行交互。在测试中,这通常被称为“设置”或“构建”,本质上,我们正在初始化环境以匹配测试过程中要与之交互的适当状态。

最后,我们准备看看我们的断言。在这里,我们期待着里面的文字,在你的vue.js程序中设置.hello

中的h1为“Welcome to Your Vue.js App.”。“这是真的吗?”好吧,如果你已经运行你的测试,你知道他们通过了。所以,让我们看看helloworld.vue,看看它的代码设置。
vue-tdd-6.png

在第3行,我们看到里面的H1。你好,是从我们的Vue数据传递一个信息。然后,在28行我们看到,信息是我们预期的字符串:“Welcome to Your Vue.js App.”看起来我们的测试像是正确的!

写一个测试

既然我们确信我们的测试是正确的,那么我们来添加一个我们自己的测试。编写任何测试的第一步总是弄清楚我们想要测试什么。这也是最难做的事情,也是最容易解释的部分。

那里有许多不同的策略。我发现一个好的做法是花一点时间思考给定的组件应该做什么,然后编写测试来验证它。我通常不担心“单元”测试每个方法或属性。相反,我专注于测试我期望从组件中获得的行为。

让我们把这种方法用在我们的HelloWorld组件。我们期望什么样的行为?我们希望它能提供一组静态信息,而我们当前的测试涵盖了。如果动态MSG不呈现,那么我们可以相当肯定我们的内容渲染会有问题。但是,让我们编写一个测试来确保所有链接都显示在页面上,即使出现了一个未知问题。

首先,让我们来考虑一下我们的测试。我们希望确保所有链接都显示正确。因此,让我们编写一个测试,以确保我们呈现正确的链接数量。

回到HelloWorld.spec.js,我们的第一it()右下方,我们可以添加一个像这样:

it('should show all the links', () => {
})

现在,我们需要像在第一次测试中那样,建立我们的内容。所以,我们可以添加相同的常量,我们在第一个it()中。

it('should show all the links', () => {
 const Constructor = Vue.extend(HelloWorld)
 const vm = new Constructor().$mount()
})

我们要确保所有的链接显示相应的页面。让我们试着找出我们组件呈现的所有链接的计数,看看是否符合我们的期望。在helloworld.vue我们有9个环节,所以我们希望我们的组件来呈现9个环节。

it('should show all the links', () => {
 const Constructor = Vue.extend(HelloWorld)
 const vm = new Constructor().$mount()
 expect(vm.$el.querySelectorAll('a').length)
 .to.equal(9)
})

当我们运行测试套件时,我们可以看到我们运行结果正在变绿!要检查是否正常,请尝试注释一个链接,以确保它像我们预期的那样失败。

总结

我们在这次演练中已经讨论了很多。我们开始把我们的项目和Vue-cli运行。然后,我们查看了默认测试,看看它们是如何工作的。最后,我们编写了自己的测试,以确保我们的组件能按照我们期望的方式工作。

虽然我们涉及了很多,但这只是冰山一角。学习测试Vue我推荐你看看Vue课程 和TDD课程。其他一些很棒的资源是mocha入门指南也有免费的内容和vue.js测试文档。

当然,我们都知道最好的学习方法就是继续练习。所以,对于你的下一个项目或者全新的组件,试着设置测试并给它一个点赞。我敢打赌你会对你所能取得的成就印象深刻。如果你被卡住了,可以在评论中问我任何问题。直到下一次,快乐的编码!

汇智网(www.hubwiz.com)小智翻译,原文有修改。

分享Vue.js的入门级全家桶系列教程:

1.vue.js 入门与提高: http://xc.hubwiz.com/course/vue.js
2.vuex 2 入门与提高: http://xc.hubwiz.com/course/vuex
3.vue-router 入门与提高: http://xc.hubwiz.com/course/vuerouter
4.vue.js 工程化实践: http://xc.hubwiz.com/course/vuegch

TDD-LTE VUE 中级试题.xlsx (单选题) 关于基带板光口使用原则,下面说法错误的是: 基带板光口优先级OF0最高,OF1次之,OF2最低,连接多个RRU时,需按照优先级顺序分配 一块基带板接多个小区时,多个小区的上下行时隙配比模式、特殊子帧配比模式、CFI格式必须一致 BPL0提供三个2.4576G/4.9152G/6.144G CPRI光口,用于连接RRU BPL1提供六个2.4576G/4.9152G/6.144G/9.8304G CPRI光口,用于连接RRU 立即下载

相关推荐

helloworld_test1:世界你好,世界你好

helloworld_test1 我是个白痴 Hello world, world hello

helloworld.js:JavaScript项目的初始模板

helloworld.js JavaScript项目的初始模板 结构 文件夹src将包含生产代码。 spec将包含测试。 要求 设置 npm install 运行测试 ./node_modules/.bin/gulp

vue.js数据驱动_Vue.js的测试驱动开发简介

vue.js数据驱动by Sarah Dayan 通过莎拉·达扬 Vue.js的测试驱动开发简介 (An introduction to test-driven development with Vue.js) Test-driven development (TDD) is a process where you write tests before you write the associ...

cumian9828的博客 668

madgwick算法基于MPU9250姿态融合漂移问题的原因

基于MPU9250的madgwick算法姿态漂移问题原因 0、声明 因为这个是现象是不是共性目前本人还没研究过,只是在个体问题研究的基础上得出的结论,或许我买到的MPU9250是一个盗版:),所以只具备参考性。 1、现象 使用MPU9250的加速度计、角速度计、磁力计(AK8963)原始数据输入到madgwick算法中,得到的姿态最终会在停止姿态变化后仍然漂移一小段时间。其中加速度计和角速度计读取速率为400hz,磁力计为100hz,加速度计采样范围±2g,角速度计采样范...

GreedyZombie的博客 3872

车载导航测试,面试常见问题

车载导航测试是汽车软件测试的重要组成部分,涉及验证导航系统的功能、性能、可靠性和用户体验。在面试中,面试官通常会考察候选人的测试思维、问题解决能力和实际经验。以下我将从常见问题类别入手,逐步介绍面试中的高频问题,并提供结构化分析。通过以上结构化准备,你能在面试中自信应对车载导航测试相关问题。用户体验测试关注界面友好性和交互流畅性,安全测试则涉及功能安全和数据隐私。功能测试聚焦于导航核心功能的正确性,如路线规划、位置定位和地图显示。面试官会考察你如何识别、报告和跟踪缺陷,以及熟悉测试工具。

m0_69889939的博客 525

晋南讲堂之持久层框架Mybatis—(一)HelloWorld

1. 基本环境搭建   从github上下载最新版本的Mybatis,。

衣人之衣者,怀人之忧;食人之食者,死人之事! 2848

立创·庐山派-K230-CanMV(嘉楠勘智)开发板通过ATK-ESP8266实现图像识别数据无线传输与原子云对接

本文详细介绍了如何利用立创·庐山派K230开发板与ATK-ESP8266模块实现图像识别数据的无线传输及与原子云平台的对接。通过硬件连接、环境配置、代码实现及调试技巧的讲解,为开发者提供了一套完整的物联网解决方案,特别适用于智能监控和边缘计算场景。

study的专栏 949

vue tdd_TDD与Vue.js第1部分-简单页面

vue tddDisclaimer: I assume you have some knowledge in unit testing with Vue.js, and what is TDD in general. I will go straight to the point without telling you what each function do. If you don’t hav...

weixin_26750481的博客 323

【异常】Codybuddy Error Code: 14003 too many requests 限流报错问题排查与解决指南

14003报错本质为服务端限流拦截,并非账号封禁或程序致命故障,90%以上的场景可通过等待冷却+规范使用行为解决。通过本文的排查步骤,可快速恢复工具使用,同时规避后续重复触发该问题。

奶爸的编程之路,也就一周冷个三天 1251

GEE:关于遥感生态指数(RSEI)的若干疑问

本文记录了若干关于在 Google Earth Engine (GEE)平台上,计算基于主成分分析(PCA)的遥感生态指数(RSEI)的问题。并记录了解决这些问题的一些答案。问题包括,主成分分析的特征值的正负,主成分的占比,去云后空值像素的处理方法,异常值处理方法,如何看载荷等。

养乐多的博客 3416

.spec.js文件是什么_BeanValidation 1.1 Spec Lead建议新功能

Apache CODI的第四版 Apache MyFaces扩展CDI'CODI'的第四版已经发布。 CODI为Java平台提供了可移植的CDI扩展。 0.9.3版增加了可插入的拦截器实现和StartupEventBroadcaster,并包括对混合的view-config / navigation星座的支持。 刚接触CODI吗? 查看我们对 Gerhard Petracek的采访 ,...

1612

Z-Image Turbo随机性增强插件的下载教程及使用方法 z-image生成图像太相似怎么办 Z-Image Turbo 整合包下载

Z-Image Turbo 是出了名的“seed 不敏感”,非常难做多样化图像创作。ComfyUi-ConditioningNoiseInjection 插件通过在conditioning(提示词编码)阶段加入可控噪声,成功解决了 Turbo 随机性不足的问题。它不仅能让 Turbo 产生更丰富的构图差异,还能保持主题稳定,是目前我测试过最有效的 Turbo 随机性增强工具。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1973

Vue CLI3 快速启动指南(一)

Vue 最初是由一个人 Evan You 发起的项目。令人惊讶的是,它已经发展到今天这个地步:成为最受欢迎的前端框架之一,与由公司支持的 React 和 Angular 竞争。当然,这些并不是唯一的前端框架,但 Vue、React 和 Angular 这三者似乎是最受欢迎的,互联网上充斥着这些框架的比较和使用经验。比如,很常见的是看到一篇比较 Vue 和 React 的文章,或者一篇关于 Vue 比 Angular 更好的博客文章。

龙哥盟 1186

【车载以太网】ATU(Address Translation Unit / Address Table Unit)

【车载以太网】ATU(Address Translation Unit / Address Table Unit)

天赐好车的博客 150

Oracle EBS AP 应付模块核心实现逻辑(极简骨架 + 分层拆解 + 业务流转 + 分录 + 核心表)

Oracle EBS AP应付模块采用四层逻辑架构:1)主数据层统一管控供应商基础信息;2)发票负债层通过三单匹配校验生成应付账款;3)付款核销层实现负债冲减;4)SLA层自动生成财务凭证。核心流程包括发票验证(匹配PO/收货单)、付款核销(全额/部分冲账)、会计分录自动生成(通过SLA引擎)。模块严格遵循"无匹配不负债、无验证不入账"原则,与采购、库存等模块深度集成,实现从供应商创建到付款核销的完整业务闭环,确保应付账款准确性和审计追溯能力。

金牌架构师 439

如何高效学习Vue.js:从新手到高手的进阶指南

确保你的计算机上已经安装了Node.js和npm(Node Package Manager)。你可以通过访问下载并安装适合你操作系统的版本。: 使用npm安装Vue CLI工具,它可以帮助我们快速启动一个新的Vue项目深色版本: 使用Vue CLI创建一个新的Vue项目。这将初始化项目结构,并设置好基本配置。深色版本根据提示选择你需要的功能,如Babel, Router等。深色版本cd my-blog: 例如,如果你想要使用Vuex来管理状态,或者Vuetify作为UI框架,可以通过npm安装这些库。

hhhhhhah_的博客 703

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

vue 单元测试

Karma 是一个基于 Node.js 的 JavaScript 测试执行过程管理工具(Test Runner)。该工具在 Vue 中的主要作用是将项目运行在各种主流 Web 浏览器进行测试。换句话说,他是一个测试工具,能让代码在浏览器的环境下进行测试。需要它的原因在于,代码可能是设计在浏览器端执行的,在 node 环境下测试可能会有些 bug 暴露不出来;另外,浏览器有兼容问题,Karma 提供了手段让代码自动运行在多个浏览器(Chrome,firefox,ie 等)环境下运行。

与墨的编程成长历程 1987

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Vue CLI3 快速启动指南(二)

在本节中,我们将使用 Cypress 进行端到端测试。Cypress 在 Chrome 浏览器中运行良好。或者,如果你想使用基于 Selenium 的工具,你可以在这个网站上查看 Nightwatch.js:nightwatchjs.org/.要了解更多关于 Cypress 的信息,请访问以下网址的官方网站:www.cypress.io/。如果你访问 Cypress 网站,你会看到它被描述为:快速、简单、可靠的测试任何在浏览器中运行的东西。让我们马上开始吧。

龙哥盟 1088

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

easy-vibe 实战:软件测试策略完整指南——从测试金字塔到 TDD 与 AI 辅助测试

> 本篇指南以 easy-vibe 开源课程仓库中 [testing-strategies.md](https://link.gitcode.com/i/57bd3263b7fb818e4b9cdcc883bd9267) 章节为主体,系统讲解软件测试的核心策略:测试金字塔的分层与配比、单元测试的 FIRST 原则与 AAA 结构、TDD 的红-绿-重构循环,以及不同项目类型的测试策略选型,并演示如

gitblog_00215的博客 1065

前端自动化测试Vue中TDD和单元测试示例详解

Vue提供了@vue/test-utils来帮助我们进行单元测试,创建Vue项目的时候勾选测试选项会自动帮我们安装

qq_45158700的博客 650

【Vue】MacOS从0开始创建一个前端Vue项目并集成AntDesignVue

前端vue项目从0开始构建,同时集成antdesignvue。

高朗的博客 1644

自动化测试(二)01-前端测试分为单元测试、集成测试和E2E测试 & 测试工具对比-适合TDD或 BDD、断言、异步测试 & 测试工具的类型

自动化测试(二)01-前端测试分为单元测试、集成测试和E2E测试 & 测试工具对比-适合TDD或 BDD、断言、异步测试 & 测试工具的类型 前端自动化测试 测试是一个庞大的主题,包括各种分类的测试,诸如黑盒测试/白盒测试、单元测试/集成测试/端到端测试等。通常程序员在测试自己的代码的时候用得最多的便是单元测试,但是因为测试也是需要代价,很多人是不喜欢写测试的,甚至是一点都不写。 那么是什么原因让大家不愿意写呢? 不熟悉 浪费时间 知识不成体系 团队氛围 缺少实践 我们要从基础的东西学起

weixin_44867717的博客 9781

Cypress 仓库测试策略与测试风格指南:从 TDD 工作流到可访问性驱动的定位器写法

本文以 Cypress 官方仓库内部的 [guides/testing-strategy-and-styleguide.md](https://link.gitcode.com/i/9e1b8406b70be386dc1cf9c741c8dba0) 为核心,系统梳理该仓库“如何写测试、如何评审测试 PR”的完整方法论:从测试类型划分、TDD 工作流,到组件测试 / E2E 测试的落地方式、`mou

gitblog_00623的博客 1004
上一篇: 用Vue.js递归组件构建一个可折叠的树形菜单
下一篇: 为什么43%前端开发者想学Vue.js
落叶无声9
博客等级 码龄12年 443粉丝 343原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值