09 2023 档案
摘要:使用async await 如果一个异步函数正在使用Promises,那么我们可以使用async await语法来运行测试,就像我们通常做的一样。例如,考虑以下类,它使用Promise返回一个值,如下所示: 1 class AsyncWithPromise { 2 delayedPromise():
阅读全文
摘要:使用 done Jest 提供了一个名为 done 的方法,用于表示测试运行应该等待异步调用完成。done 函数可以作为参数传递给任何 beforeAll、beforeEach 或 it 函数,并且允许我们的异步测试在继续之前等待 done 函数被调用。让我们使用 done 重写我们之前失败的测试如
阅读全文
摘要:异步测试 (Asynchronous tests) 正如我们在探索JavaScript和TypeScript时所看到的,我们编写的大部分代码都是异步的。这意味着我们无法准确控制回调函数何时被调用,或者Promise何时解析,因为我们正在等待一个超出我们控制范围的事件发生。这经常在单元测试中引起问题,
阅读全文
摘要:返回值的监视器 (Spies returning values) 当我们希望模拟函数的返回值时,我们可以轻松地从模拟实现中返回一个值。作为示例,请考虑以下类: 1 class MyMockedClass { 2 functionToBeMocked(): number { 3 return 5; 4
阅读全文
摘要:Jest 监视器 (Jest spies) Jest还提供了一种能够检查特定类方法是否被调用的能力,使用的是所谓的spy。考虑以下类定义: 1 class MySpiedClass { 2 testFunction() { 3 console.log(`testFunction() called`)
阅读全文
摘要:Jest模拟 (Jest mocks) 在测试我们的代码时,我们经常遇到这样的情况:我们希望确保某个特定函数被调用,或者它被使用正确的参数进行了调用。当一个特定函数按顺序调用其他函数以执行一些业务逻辑时,这种情况最常见。例如,我们可能会调用一个初始化函数,并且该初始化函数可能会调用多个REST服务来
阅读全文
摘要:数据驱动测试 (Data-driven tests) 很多时候,我们需要运行相同的测试多次,只是输入值不同。作为这个的一个例子,请考虑以下测试: [1, 2, 3, 4, 5] .forEach((value: number) => { it(`${value} should be less tha
阅读全文
摘要:测试设置和拆卸 ( Test setup and teardown) 在运行特定的测试之前,我们可能希望先执行一些代码。这可能是为了初始化一个特定的变量,或者确保对象的依赖关系已经设置好。同样地,我们可能希望在特定的测试运行后执行一些代码,甚至在整个测试套件运行完毕后执行。为了说明这一点,请考虑以下
阅读全文
摘要:匹配器 (Matchers) 1. toBeJest 使用所谓的匹配器来将测试中的预期值与接收到的值进行匹配。让我们快速看一下其中一些匹配器,如下所示: 1 it("should match with toBe", () => { 2 expect(1).toBe(2); 3 }); 在这里,我们使
阅读全文
摘要:强制运行和跳过测试 (Forcing and skipping tests) 在处理一个已经编写了多个测试的应用程序时,我们通常只想运行特定的测试或者一组特定的测试。这种操作被称为强制运行测试,因为我们要求整个测试套件只运行指定的测试。可以通过以下两种方式来实现: 1 describe("a gro
阅读全文
摘要:分组测试 (Grouping tests) 在一个测试规范文件中,我们可能希望将我们的测试分组为逻辑集合。Jest 使用 describe 函数来实现这个目的,如下所示的测试代码: 1 describe("a group of tests", () => { 2 test("first test",
阅读全文
摘要:观察模式 (Watch mode) Jest和其他测试框架一样,也可以在观察模式下运行。这意味着它会监视项目中的所有文件,并在任何文件更改时自动重新运行任何测试。让我们按照以下方式更新我们的package.json文件: { ... "scripts": { "test": "jest --watc
阅读全文
摘要:ts-jest Jest 是一个 JavaScript 测试框架,因此它会在我们的项目中寻找 JavaScript 测试来运行。我们可以运行 TypeScript 编译器生成 JavaScript 文件,或者使用像 ts-jest 这样的框架。ts-jest 是一个 TypeScript 到 Jes
阅读全文
摘要:Jest Jest是一个简单易配置且功能强大的JavaScript单元测试框架,它构建在流行的Jasmine框架之上。Jasmine已经存在很长时间了,是一个成熟、功能齐全且广泛使用的测试框架。Jest通过使配置更加容易,并提供丰富的额外功能来增强Jasmine。Jest还可以并发运行测试,这显著加
阅读全文
摘要:单元测试、集成测试和验收测试 自动化测试可以分为三个一般领域,或者说是三种类型的测试 - 单元测试、集成测试和验收测试。我们也可以将这些测试描述为黑盒或白盒测试。白盒测试是指内部逻辑或代码结构对于测评人员来说是已知的。而黑盒 测试则相反,它们是在测评人员不了解内部设计或逻辑的情况下进行的 测试。 单
阅读全文
摘要:测试驱动开发(TDD)实际上是一种思维方式,或者说是一种范式,应该融入到任何标准的开发流程中。这个范式从测试开始,并通过这些测试推动生产代码的进展。TDD意味着提出问题:“我如何知道我已经解决了问题?”,而不仅仅是“我如何解决问题?” 这是一个重要的观念需要理解。我们编写代码来解决问题,但我们也应该
阅读全文
摘要:在JavaScript开发的现代世界中,有许多不同的前端框架可供我们用来编写应用程序,从旧的框架如Backbone.js到较新的Angular、React和Vue等。这些框架通常使用模型视图控制器(MVC)设计模式或其变体之一,例如模型视图表现器(MVP)或模型视图视图模型(MVVM)。当将这组模式
阅读全文
摘要:什么是Codeium ? Codeium是现代编码超能力,一个基于尖端人工智能技术构建的免费代码加速工具包。目前,Codeium在70多种语言中提供自动完成、聊天和搜索功能,速度快且建议质量先进。 现代编码工作流中有许多令人厌烦、乏味或沮丧的部分,从重复使用样板代码到在StackOverflow上搜
阅读全文