摘要: 使用async await 如果一个异步函数正在使用Promises,那么我们可以使用async await语法来运行测试,就像我们通常做的一样。例如,考虑以下类,它使用Promise返回一个值,如下所示: 1 class AsyncWithPromise { 2 delayedPromise(): 阅读全文
posted @ 2023-09-25 08:57 TonysDad 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 使用 done Jest 提供了一个名为 done 的方法,用于表示测试运行应该等待异步调用完成。done 函数可以作为参数传递给任何 beforeAll、beforeEach 或 it 函数,并且允许我们的异步测试在继续之前等待 done 函数被调用。让我们使用 done 重写我们之前失败的测试如 阅读全文
posted @ 2023-09-22 15:51 TonysDad 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 异步测试 (Asynchronous tests) 正如我们在探索JavaScript和TypeScript时所看到的,我们编写的大部分代码都是异步的。这意味着我们无法准确控制回调函数何时被调用,或者Promise何时解析,因为我们正在等待一个超出我们控制范围的事件发生。这经常在单元测试中引起问题, 阅读全文
posted @ 2023-09-22 15:37 TonysDad 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 返回值的监视器 (Spies returning values) 当我们希望模拟函数的返回值时,我们可以轻松地从模拟实现中返回一个值。作为示例,请考虑以下类: 1 class MyMockedClass { 2 functionToBeMocked(): number { 3 return 5; 4 阅读全文
posted @ 2023-09-22 14:55 TonysDad 阅读(5) 评论(0) 推荐(0) 编辑
摘要: Jest 监视器 (Jest spies) Jest还提供了一种能够检查特定类方法是否被调用的能力,使用的是所谓的spy。考虑以下类定义: 1 class MySpiedClass { 2 testFunction() { 3 console.log(`testFunction() called`) 阅读全文
posted @ 2023-09-22 13:47 TonysDad 阅读(8) 评论(0) 推荐(0) 编辑
摘要: Jest模拟 (Jest mocks) 在测试我们的代码时,我们经常遇到这样的情况:我们希望确保某个特定函数被调用,或者它被使用正确的参数进行了调用。当一个特定函数按顺序调用其他函数以执行一些业务逻辑时,这种情况最常见。例如,我们可能会调用一个初始化函数,并且该初始化函数可能会调用多个REST服务来 阅读全文
posted @ 2023-09-22 12:50 TonysDad 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 数据驱动测试 (Data-driven tests) 很多时候,我们需要运行相同的测试多次,只是输入值不同。作为这个的一个例子,请考虑以下测试: [1, 2, 3, 4, 5] .forEach((value: number) => { it(`${value} should be less tha 阅读全文
posted @ 2023-09-22 10:44 TonysDad 阅读(25) 评论(0) 推荐(0) 编辑
摘要: 测试设置和拆卸 ( Test setup and teardown) 在运行特定的测试之前,我们可能希望先执行一些代码。这可能是为了初始化一个特定的变量,或者确保对象的依赖关系已经设置好。同样地,我们可能希望在特定的测试运行后执行一些代码,甚至在整个测试套件运行完毕后执行。为了说明这一点,请考虑以下 阅读全文
posted @ 2023-09-22 10:23 TonysDad 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 匹配器 (Matchers) 1. toBeJest 使用所谓的匹配器来将测试中的预期值与接收到的值进行匹配。让我们快速看一下其中一些匹配器,如下所示: 1 it("should match with toBe", () => { 2 expect(1).toBe(2); 3 }); 在这里,我们使 阅读全文
posted @ 2023-09-21 14:08 TonysDad 阅读(25) 评论(0) 推荐(0) 编辑
摘要: 强制运行和跳过测试 (Forcing and skipping tests) 在处理一个已经编写了多个测试的应用程序时,我们通常只想运行特定的测试或者一组特定的测试。这种操作被称为强制运行测试,因为我们要求整个测试套件只运行指定的测试。可以通过以下两种方式来实现: 1 describe("a gro 阅读全文
posted @ 2023-09-21 13:45 TonysDad 阅读(15) 评论(0) 推荐(0) 编辑