首页 > 其他分享 >Typescript 测试驱动开发 TDD (10)

Typescript 测试驱动开发 TDD (10)

时间:2023-09-22 10:34:37浏览次数:46  
标签:count 10 Typescript increment TDD GlobalCounter 测试 globalCounter 函数

测试设置和拆卸 ( Test setup and teardown)


在运行特定的测试之前,我们可能希望先执行一些代码。这可能是为了初始化一个特定的变量,或者确保对象的依赖关系已经设置好。同样地,我们可能希望在特定的测试运行后执行一些代码,甚至在整个测试套件运行完毕后执行。为了说明这一点,请考虑以下类:

1 class GlobalCounter {
2      count: number = 0;
3      increment(): void {
4          this.count++;
5      }  
6 }

这里,我们有一个名为GlobalCounter的类,它具有一个count属性和一个increment函数。当实例化该类时,count属性被设置为0,并且increment函数会增加其值。我们可以在测试套件中使用启动和拆除函数如下:

 1 describe("test setup and teardown", () => {
 2     let globalCounter: GlobalCounter;
 3     beforeAll(() => {
 4           globalCounter = new GlobalCounter();
 5     });
 6 
 7     beforeEach(() => {
 8           globalCounter.count = 0;
 9     });
10 
11     afterEach(() => {
12          console.log(`globalCounter.count = ${globalCounter.count}`);
13     });
14 
15 });

在这里,我们有一个名为“test setup and teardown”的测试套件。在这个测试套件中,我们有一个名为globalCounter的类型为GlobalCounter的变量。然后,我们使用beforeAll函数创建GlobalCounter类的实例,并将其赋值给变量globalCounter。beforeAll函数将在套件中所有测试运行之前运行一次。

然后我们使用beforeEach函数将值0分配给globalCounter类实例的count属性。 beforeEach函数将在每个测试运行之前运行一次。

最后,我们有一个afterEach函数,它将全局计数器的count属性的值记录到控制台。afterEach函数将在每个测试完成后运行。请注意,Jest还提供了一个afterAll函数,在套件中所有测试都完成后运行一次。

 

有了这些设置和拆卸函数,我们可以按照以下方式编写一些测试:

 1 it("should increment", () => {
 2     globalCounter.increment();
 3     expect(globalCounter.count).toEqual(1);
 4 });
 5 
 6 it("should increment twice", () => {
 7     globalCounter.increment();
 8     globalCounter.increment();
 9     expect(globalCounter.count).toEqual(2);
10 });

这里,我们有两个测试。第一个测试在globalCounter变量上调用increment函数一次,然后检查count属性是否等于1。第二个测试调用increment函数两次,然后检查count属性是否等于2。请注意,在每个测试之前都会调用beforeEach函数,并且它会将count属性的值重置为0。此测试的输出还显示afterEach函数将count属性的值记录到控制台中,如下所示:

 在这里,我们可以看到每个测试后由afterEach函数记录的count属性的值。

标签:count,10,Typescript,increment,TDD,GlobalCounter,测试,globalCounter,函数
From: https://www.cnblogs.com/bisslot/p/17721689.html

相关文章

  • Ubuntu 23.10/24.04 LTS 放弃默认使用 snap 版 CUPS 打印堆栈
    导读Canonical的开发者、OpenPrinting的项目负责人TillKamppeter今年5月表示,计划在Ubuntu23.10(ManticMinotaur)上默认使用Snap版本的CUPS打印堆栈。不过经过数月的测试,官方放弃了这项决定。Ubuntu23.10(ManticMinotaur)和Ubuntu24.04LTS发行版默认还是......
  • typescript_error_运算符“+”不能应用于类型“Number”和“Number”
    functionadd_(num1:Number,num2:Number){returnnum1+num2}console.log(add_(5,7))Number是一个Interface,number才是表示类型,换成小写就可以了functionadd_(num1:number,num2:number){returnnum1+num2}console.log(add_(5,7))......
  • 依次输入10个数,要求输出最大值
    intmain(){ intn=1; inti=1; intmax=1; scanf("%d",&max);while(n<10)//将第一个数赋给max,后面只需在输入9个数,即可将数比完,得到最大数//循环9次 { scanf("%d",&i); if(max<=i)  max=i; n++; } printf("%d",max); re......
  • P1075 [NOIP2012 普及组] 质因数分解
    算法一根据唯一分解定理,小于\(n\)的最大的能整除\(n\)的整数一定就是答案,可以暴力枚举。时间复杂度\(O(n)\),实际得分\(60\)。算法二发现算法一不能通过的原因是较大的那个质数可能的取值范围太大了。而较小的那个质数一定小于等于\(\sqrtn\),我们枚举它即可。时间复......
  • 洛谷P5104 红包发红包
    我们假设他是离散的设[0,w]这个区间有i个数那么第一个人期望获得的钱数\(E(1)=\frac{1}{i}\sum_{j=1}^{i}\frac{w}{i}j=\frac{w(1+i)}{2i}\)因为这个区间实际上有无数个数,故令i趋于无穷,有\(E(1)=\frac{w}{2}\)那么轮到第二个人的时候还剩下\(w-\frac{w}{2}=\frac{w}{2}\)这么......
  • Cannot initiate the connection to cn.archive.ubuntu.com:80 (2403:2c80:5::6). - c
     版本:ubuntu22.04 Cannotinitiatetheconnectiontocn.archive.ubuntu.com:80(2403:2c80:5::6).-connect(101:Networkisunreachable) 嗯,被墙了。找到/etc/apt/source.list替换里面的源为清华源 ubuntu|镜像站使用帮助|清华大学开源软件镜像站|Tsinghu......
  • 10分钟设置免费海外远程桌面
    前言本教程将向您介绍如何使用AmazonLightsail服务的免费套餐轻松搭建属于您的远程桌面。依托于Amazon全球可用区,您可以在世界各地搭建符合您配置需求的远程桌面。本教程需要先拥有亚马逊云科技海外账户。现在注册亚马逊云科技账户可以享受12个月免费套餐,包括EC2等多种热......
  • 【230921-10】函数 y=|log2(x+1)|图示
    【预期】y=log2_x是标准的对数函数,从正无穷小通过(1,0)升到x轴上方,函数是单调递增的,上升斜率愈来愈小;y=log2_(x+1)是以上图线向左平移一个单位,图线通过的定点从(1,0)变成了(0,0);y=|log2(x+1)|是以上图线在y轴左半部分向上翻转而成。【实际图像】 【代码】<!DOCTYPEhtml><htmll......
  • SLC SSD重出江湖!Solidigm D7-P5810正式发布:每天65次全盘写入
    如今的SSD,在闪存介质上早已经是TLC遍地走、QLC越来越多,很多玩家非常怀念当年的MLC,甚至是最初的SLC。原因无它,MLC、SLC的可靠性非常高。快科技9月21日消息,Solidigm宣布推出其首款面向数据中心市场的超高速SLCSSD——D7-P5810。它使用了久经考验的144层堆叠3D闪存,但确切地说并......
  • 上新!100%国产物料认证,米尔入门级国产核心板全志T113-i方案
    自米尔国产全志T113系列的核心板发布以来,这款高性价比、低成本、入门级、高性能的国产核心板咨询不断,配套的开发板已经成交量数百套,深受工程师们的青睐,为了集齐T113全系列的产品,这次米尔发布了基于全志T113-i处理器的核心板和开发板,让广大工程师有了更多的选择。接下来看看这款T113......