



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第在TypeScript项目中进行BDD测试目录什么是BDDGherkin语法给TypeScript项目配置BDD测试框架Cucumber.js
什么是BDD
BDD(Behavior-DrivenDesign)是软件团队的一种工作方式,通过以下方式缩小业务人员和技术人员之间的差距:
鼓励跨角色协作,建立对待解决问题的共同理解以快速、小迭代的方式工作,以增加反馈和价值流生成系统文档,自动对照系统行为进行检查
我们通过将协作工作的重点放在具体的、真实的例子上来实现这一点,这些例子说明了我们希望系统如何运行。我们用这些例子来指导我们在持续合作的过程中从概念到实施。
Gherkin语法
BDD特性(Feature)描述采用Gherkin语法。Gherkin使用一组特殊的关键字为可执行规范提供结构和意义。每个关键词都被翻译成多种语言;在本参考资料中,我们将使用英语。
Cucumber是流行的BDD测试框架,支持各种平台,其文档中的大多数行都以一个关键字开头。
注释仅允许出现在新行的开头,即要素文件中的任何位置。它们以零个或多个空格开头,后跟散列符号(#)和一些文本。(Cucumber目前不支持区块注释。)
空格或制表符可用于缩进。建议的缩进级别为两个空格。下面是一个例子:
Feature:Guesstheword
#Thefirstexamplehastwosteps
Scenario:Makerstartsagame
WhentheMakerstartsagame
ThentheMakerwaitsforaBreakertojoin
#Thesecondexamplehasthreesteps
Scenario:Breakerjoinsagame
GiventheMakerhasstartedagamewiththeword"silky"
WhentheBreakerjoinstheMaker'sgame
ThentheBreakermustguessawordwith5characters
Gherkin语法具体可以参考GherkinReference-CucumberDocumentation
给TypeScript项目配置BDD测试框架Cucumber.js
通过命令yarnadd-D@cucumber/cucumberchai安装BDD测试框架Cucumber.js和断言(Assert)框架chai。
创建目录features,在目录下创建文件bank-account.feature,内容如下:
#features/bank-account.feature
Feature:BankAccount
Scenario:Storesmoney
GivenAbankaccountwithstartingbalanceof$100
When$100isdeposited
ThenThebankaccountbalanceshouldbe$200
此文档描述了存款场景,银行存款账户有100美金,存入100美金,则账户应该有200美金。
创建step-definitions\bank-account.steps.ts
const{Given,Then,When}=require('@cucumber/cucumber');
const{assert}=require('chai');
letaccountBalance=0;
Given('Abankaccountwithstartingbalanceof${int}',function(amount){
accountBalance=amount;
When('${int}isdeposited',function(amount){
accountBalance=Number(accountBalance)+Number(amount);
Then('Thebankaccountbalanceshouldbe${int}',function(expectedAmount){
assert.equal(accountBalance,expectedAmount);
我们需要创建与之对应的测试代码,代码将通过类型与特性文件中输入和输出验证进行映射,其中Given对应的方法将获得100美金初始账户金额的映射,传给accountBalance。在When对应的方法中,amount测试会获得存入100美金的金额映射。最后,在Then对应的方法中expectedAmount会映射到200美金,用来验证最后是否与accountBalance相等,如果相等断言正常返回,否则BDD判断测试Case失败。
我们可以通过命令
yarncucumber-jsfeatures\**\*.feature-rstep-definitions\**\*.js
运行测试。
要想完成自动化配置,可以在工程根目录下创建文件cucumber.js,内容如下:
//cucumber.js
letcommon=[
'features/**/*.feature',//Specifyourfeaturefiles
'--requirestep-definitions/**/*.js',//Loadstepdefinitions
'--formatprogress-bar',//Loadcustomformatter
].join('');
module.exports={
default:common
再次执行命令yarncucumber-js,通过cucumber.js文件中的配置项,会自动找到feature文件和步骤定义脚本文件,完成BDD
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年市政工程新业态试题及答案
- 新媒体技术:理论、案例与应用(全彩微课版) 课件全套 第1-8章 新媒体概述- 综合案例
- 执业医师实训考试试题及答案
- 安全技能考试题及答案
- 开发人才的有效途径计划
- 食堂急救设备管理协议
- 确立企业愿景促进全员参与的实践计划
- 工程项目管理学科交叉研究试题及答案
- 采购政策与管理培训协议
- 经济法概论知识点全景与试题及答案
- 核磁共振硅谱分析方法
- (高清版)JTGT 3222-2020 公路工程物探规程
- 国家级自然灾害工程应急救援队伍建设规范
- 消毒供应中心进修汇报
- 水利水电工程建设用地设计标准(征求意见稿)
- MOOC 美术鉴赏-河南理工大学 中国大学慕课答案
- 充电桩业主委托书
- 【上海市机电产品出口现状及优化建议探析8600字(论文)】
- 2024近期名校模拟题诗歌鉴赏(衔接教材)汇编
- MOOC 锅炉原理-长沙理工大学 中国大学慕课答案
- 医疗器械挂靠合作协议
评论
0/150
提交评论