首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Jest单元测试调用返回Promise的函数

Jest是一个流行的JavaScript测试框架,用于编写和运行单元测试。它提供了丰富的断言库和测试工具,可以帮助开发人员轻松地编写可靠的测试用例。

在进行单元测试时,经常会遇到需要调用返回Promise的函数的情况。为了正确地测试这些函数,我们可以使用Jest提供的异步测试工具和语法。

首先,我们需要确保被测试的函数返回一个Promise对象。这可以通过使用async/await或返回一个Promise的函数来实现。例如,我们有一个返回Promise的函数如下:

代码语言:txt
复制
function fetchData() {
  return new Promise((resolve, reject) => {
    // 异步操作,例如从服务器获取数据
    setTimeout(() => {
      resolve('Data');
    }, 1000);
  });
}

接下来,我们可以使用Jest的测试工具和语法来编写测试用例。在测试用例中,我们可以使用async关键字将测试函数标记为异步函数,并使用await关键字等待Promise的解析。例如,我们可以编写一个测试用例来测试上述的fetchData函数:

代码语言:txt
复制
test('fetchData should return the correct data', async () => {
  const data = await fetchData();
  expect(data).toBe('Data');
});

在上面的测试用例中,我们使用await关键字等待fetchData函数的Promise解析,并使用expect断言函数来验证返回的数据是否与预期值相等。

Jest还提供了其他一些有用的工具和语法,例如mock函数用于模拟函数的行为,beforeEachafterEach函数用于在每个测试用例之前和之后执行一些操作,以及describe函数用于组织和描述测试套件等。

对于Jest单元测试调用返回Promise的函数,腾讯云提供了一些相关的产品和服务,例如:

  1. 云函数(Serverless Cloud Function):腾讯云的无服务器计算服务,可以帮助开发人员在云端运行代码,包括调用返回Promise的函数进行测试。了解更多信息,请访问云函数产品介绍
  2. 云开发(Tencent CloudBase):腾讯云的一站式后端云服务,提供了云函数、数据库、存储等功能,可以方便地进行前后端开发和测试。了解更多信息,请访问云开发产品介绍

以上是关于Jest单元测试调用返回Promise的函数的完善且全面的答案,希望能对您有所帮助。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

那些年错过React组件单元测试(上)

单元测试中,我们可能并不需要关心内部调用方法执行过程和结果,只想知道它是否被正确调用即可,甚至会指定该函数返回值。这个时候,mock意义就很大了。...我们在测试中也主要是用到了mock函数提供以下三种特性: 捕获函数调用情况 设置函数返回值 改变函数内部实现 下面,我将分别介绍这三种方法以及他们在实际测试中应用。...jest.fn() jest.fn()是创建mock函数最简单方式,如果没有定义函数内部实现,jest.fn()会返回undefined作为返回值。...expect(mockFn).toHaveBeenCalledWith('厦门','青岛','三亚'); }) jest.fn()所创建mock函数还可以设置返回值,定义内部实现或返回Promise...jest.spyOn() jest.spyOn()方法同样创建一个mock函数,但是该mock函数不仅能够捕获函数调用情况,还可以正常执行被spy函数

4.9K20

使用Jest测试包含setTimeout调用函数踩坑记录

前两天给一个包含setTimeout调用函数单元测试,在使用fake timer时候遇到了问题,记录一下。...而对于Promise实现,一个Promise对象创建时传入回调函数F会被立刻执行,但then和catch中传入回调会被加入到队列中,在下一轮Tick时才执行(即使F中立刻resolve或reject...回到我们测试用例,原因也就明确了:调用enqueueJob之后,catch中回调被加入了队列,而随后delay则相当于直接调用了setTimeout(前面说到Promise对象构造时回调函数是立刻执行...根据Jest官方文档,调用这个函数后,所有队列中“微任务”都会被立刻执行,这里目的就是保证catch回调能被立刻调用; 使用jest.advanceTimersByTime(6000)代替await...提供spy函数,对setTimeout函数进行了拦截侦听,被调用时不做任何事。

6.7K60

【架构师(第二十七篇)】前端单元测试框架 Jest 基础知识入门

---- 单元测试 单元测试其实在我实际开发中并没有用到过,但却经常听说,接下来进行单元测试学习 Jest 和 Vue Test Utils 基础和进阶全覆盖 TDD,测试驱动开发,一种全新开发方式...const mockCB = jest.fn() mockTest(true, mockCB) // 函数是否被调用过了 expect(mockCB).toHaveBeenCalled...(1) // 函数调用 console.log(mockCB.mock.calls); // 函数调用结果 console.log(mockCB.mock.results); }) 这里结果是...mockTest(true, mockCB) console.log(mockCB.mock.calls); console.log(mockCB.mock.results); }) 还可以 mock 函数返回值...axios.get.mockReturnValue(Promise.resolve({ data: { username: 'warbler' } })) 还用更简单方式,直接返回一个 Promise

1.3K20

前端自动化测试实践03—jest异步处理&mock

promise 处理成功,需要指定返回 expect 数量,否则可能直接走失败分支跳过 test('fetchData2 返回结果为 { success: true }', () => { /...() => { // 模拟函数返回,getData 不会真正发起 axios 请求 axios.get.mockResolvedValueOnce({ data: 'hello' }.../mock'); 4. mock - function 模拟函数调用 对于单元测试,无需关心外部传入函数实现,使用 jest.fn 生成一个 mock 函数,可以捕获函数调用返回结果,以及this.../mock' test('测试 callback', () => { // 【1】使用 jest 生成一个 mock 函数 func1,用来捕获函数调用 const func1 = jest.fn...对于单元测试,外部 class 实现无需关心,使用 jest.fn 生成一个 mock 类,例如测试 mock.js export const createObject = (classItem)

5.1K85

Jest:给你 React 项目加上单元测试

Jest 是一款轻量 JavaScript 测试框架,它卖点是简单好用,由 facebook 出品。本文就简单讲讲如何使用 Jest 对 React 组件进行测试。 为什么需要单元测试?...单元测试(Unit Testing),指的是对程序中模块(最小单位)进行检查和验证。比如一个函数、一个类、一个组件,它们都是模块。 使用单元测试优点: 更好地交付高质量代码。...Jest 基本使用 我们先写一个简单函数,作为被测试模块。...异步测试 如果使用异步测试,需要将 Promise 作为返回值。...,你需要调用函数传入 done 函数来表明测试完成: test('异步测试', done => { setTimeout(() => { expect('前端西瓜哥').toBeTruthy

2.8K20

前端单元测试Jest

概述 关于前端单元测试好处自不必说,基础介绍和知识可以参考之前博客链接:React Native单元测试。在软件测试领域,测试主要分为:单元测试、集成测试和功能测试。...Mock函数通常会提供以下三种特性: 捕获函数调用情况; 设置函数返回值; 改变函数内部实现; jest.fn() jest.fn()是创建Mock函数最简单方式,如果没有定义函数内部实现,jest.fn...)生成一个mock函数 const fn = jest.fn(); foreach([1, 2, 3], fn); //测试mock函数调用了3次...expect(fn.mock.calls.length).toBe(3); // 测试第二次调用函数第一个参数是3 expect(fn.mock.calls[2][0]...Jest异步测试主要分为3种: done函数 return promise async/await done例子如下: function fetchData(call) { setTimeout

2.7K20

Vue 应用单元测试策略与实践 02 - 单元测试基础

现在就让我们一起来学习如何编写最基础单元测试。 如果你已经有了使用 Jest 编写单元测试经验,可以选择直接跳到第二段。...,一般来说就是调用相应模块执行对应函数或方法 Then Assert 断言,这时需要借助就是 Matchers 能力,Jest 还可以扩展自己 Matcher 在 expect 后面的 toBe...想象一下你正在测试一个 Order Class price() 方法,而 price() 方法需要在 Product 和 Customer Class 中调用一些函数。...}; }); }); 我们可以看到 jest.mock() 方法中第二个参数是一个函数,那么我们就可以完全接管整个 ....未完待续…… ## 单元测试基础 ### 单元测试与自动化意义 ### 为什么选择 Jest ### Jest 基本用法 ### 该如何测试异步代码?

2.2K20

Jest单元测试之旅—实践总结

今年在新环境下开启了单元测试之旅,对单元测试进行更细致入门学习,为此对单元测试进行了总结 本文主要是对近期单元测试开发总结回顾,本文主要围绕以下内容进行分析: 什么是单元测试?...resolves/rejects:Jest会等待异步函数执行完毕该方法应该和async/await配合使用 手动调用done:在我们没有调用done之前,当前测试不会结束,直至调用done方法,有点类似回调...每个方法都有不同使用场景,每个API都会生成一个mock模拟函数Jest对模拟函数提供了很多方法给予我们模拟方法返回、实现等等,可移至文档参考 jest.fn jest.fn主要是创建一个模拟函数...,用于代替我们真实函数,可以通过该模块函数提供方法获取调用信息(.mock方法)。...而jest.mock调用方式有所不同。Jest接管require系统,jest.mock告诉Jest,它在需要时应返回模块模拟,而不是实际模块。

10.2K20

Jest中Mock网络请求

Jest中Mock网络请求 最近需要将一个比较老库修改为TS并进行单元测试,修改为TS还能会一点,单元测试纯粹是现学现卖了,初学Jest框架,觉得在单元测试中比较麻烦就是测试网络请求,所以记录一下Mock...mock后对象,也就是说我们可以认为这个库已经重写了,重写之后方法都是JESTMock Functions了,可以使用诸如mockReturnValue一类函数进行数据模拟,关于Mock Functions...,所幸Jest提供了一种可以直接实现被Mock函数方式,当然实际上Jest还提供了mockImplementation方式,这个是在demo3中使用方式,在这里我们重写了被mock函数库,在实现时候也可以使用...jest.fn完成Implementations,这里通过在返回之前写入了一个hook函数,并且在各个test时再实现断言或者是指定返回值,这样就可以解决上述问题,实际上就是实现了Jest中Mock Functions...,但是在afterAll关闭时候就出了问题,因为node服务器在关闭时调用close方法并不会真实地关闭服务器以及端口占用,他只是停止处理请求了,端口还是被占用,当启动第二个单元测试文件时会抛出端口正在被占用异常

3.3K30

Jest中Mock网络请求

最近需要将一个比较老库修改为TS并进行单元测试,修改为TS还能会一点,单元测试纯粹是现学现卖了,初学Jest框架,觉得在单元测试中比较麻烦就是测试网络请求,所以记录一下Mock掉Axios发起网络请求一些方式...mock后对象,也就是说我们可以认为这个库已经重写了,重写之后方法都是JESTMock Functions了,可以使用诸如mockReturnValue一类函数进行数据模拟,关于Mock Functions...,所幸Jest提供了一种可以直接实现被Mock函数方式,当然实际上Jest还提供了mockImplementation方式,这个是在demo3中使用方式,在这里我们重写了被mock函数库,在实现时候也可以使用...jest.fn完成Implementations,这里通过在返回之前写入了一个hook函数,并且在各个test时再实现断言或者是指定返回值,这样就可以解决上述问题,实际上就是实现了Jest中Mock Functions...,但是在afterAll关闭时候就出了问题,因为node服务器在关闭时调用close方法并不会真实地关闭服务器以及端口占用,他只是停止处理请求了,端口还是被占用,当启动第二个单元测试文件时会抛出端口正在被占用异常

2.6K30

提高代码质量——使用Jest和Sinon给已有的代码添加单元测试

Jest与Sinon.js是什么 Jest是FaceBook推出一个针对JavaScript进行单元测试库,它提供了断言、函数模拟等API来对你自己编写业务逻辑代码进行测试后。...编写单元测试 在本章中,我们会针对如何编写单元测试文件进行一个具体讲解,其中包含: 同步函数测试 异步函数测试 HTTP测试 同时,我们会对当中使用到Jest和Sinon.jsAPI会进行简单介绍...通过上面三类测试,我们基本能够覆盖现有项目中所有代码。 同步函数测试 同步函数测试过程是这几个中最简单一部分,我们可以测试函数返回值,也能够测试传入高阶函数。...('hjava'); // 判断了callback函数第一次被调用第一个参数为'hjava' }); 从上面的示例中我们可以看到,针对同步函数,我们可以通过很简单单元测试模型来验证它功能。...异步函数测试 异步函数主要分为两种——Callback方式和Promise方式。这两种方式都很简单,下面我们对两种方式进行具体介绍。详细内容可以见Jest文档中测试异步代码。

3.7K00

JavaScript测试教程–part 4:模拟 API 调用和模拟 React 组件交互

(例如 fs 或 path ),则需要在模拟文件中明确调用 jest.mock('moduleName') Jest 允许我们对函数进行监视:接下来测试是否调用了我们所创建 get 函数。...spyOn 函数返回一个 mock函数。有关其功能完整列表,请阅读文档。我们测试检查组件在渲染和运行之后是否从模拟中调用 get函数,并成功执行。...,请记住清除每个测试之间模拟调用,例如通过运行 getSpy.mockClear(),否则函数调用次数将在测试之间保持不变。...,通过它我们可以得到返回 promise:在 value 属性中可用。...从测试中返回 promise 是能够确保 Jest 等待其解决一种方法。 总结 在本文中,我们介绍了模拟模块,并将其用于伪造 API 调用。由于没有发出实际请求要求,我们测试可以更可靠、更快。

3.7K10

前端接入单元测试(Node+React)

意义假如要重构一个老前端框架,并根据其开发一个向后兼容新框架。此时老框架针对其内部API函数,写了充分单侧用例。...--coverage"单元测试编写测试业务逻辑describe('formatDate测试', ()=>{ it('formate 0 返回 1970-1-1', () => { expect(formatDate.../src/fetch.js'test('fetchPostsList中回调函数应该能够被调用', async () => { expect.assertions(1); let mockFn =...jest.fn(); await fetch.fetchPostsList(mockFn); // 断言mockFn被调用 expect(mockFn).toBeCalled();})测试快照用法...extend, helper等模块编写单元测试,特别是controller重要路由需要做单元测试;控制台和其他React项目可以利用jest工具,针对方法、组件、模块去做单元测试,特别是组件,可以利用快照功能避免多次修改测试用例

3.3K30

干货 | 携程租车React Native单元测试实践

在较大规模前端项目中,测试对于保证代码质量十分重要,而React组件化和函数式编程, 这种相同输入一定返回相同输出幂等特性特别适合单元测试。...* toBeCalled:函数是否被调用 * toBeCalledWith:函数是否以某些参数为入参被调用 * assertions:检测用例中有多少个断言被调用,一般用于异步测试 四、Jest 周期函数...Mock函数单元测试中,有许多对象或函数并不需要真实引用,因此需要mock。...创建一个mock函数,该mock函数不仅捕获函数调用情况,还可以正常执行被spy函数。...; 良好单元测试就是一份最好注释,同时迫使我们写易于测试函数式代码; 另外我们在写单元测试时候并不是堆砌覆盖率,而是需要保证功能细节正确,覆盖率并不是最重要单元测试也不是银弹,我们也在结合诸如

6K30

Jest基本使用方法以及mock技巧介绍

句法来验证不同内容; 测试异步代码:支持承诺(promise)数据类型和异步等待async / await功能; 模拟函数:可以修改或监查某个函数行为; 手动模拟:测试代码时可以忽略模块依存关系;...如下面的例子:代码里面有一个函数叫forEach。 ? 此函数可以简单使用下面方法mock,并且jest提供一些方法可以确保查看mock函数调用情况: ?...2.2.2  jest.mock()直接在单元测试里面mock 模块 例如我们很多产品代码里面会使用fs文件读取文件, 在单元测试中, 我们并不需要真去调用fs读取文件, 就可以考虑把fs模块mock掉... roots指向非本项目的root目录),这种就会自动mock了,也就是不需要在单元测试用例里再调用jest.mock('module_name')。...2.3.3  使用带模块工厂参数mock。 形式如下jest.mock(path, moduleFactory),其中模板工厂参数指的是一个返回模块函数 ? 2.3.4.

8.3K50

使用 Jest 进行前端单元测试

Jest 是一款 Facebook 开源 JS 单元测试框架,具有 auto mock、自带 mock API、前端友好(集成JSDOM)、环境隔离等特点和优势。...Mock Jest 自带一个 mock 系统,并支持自动和手动 mock。 通常项目中,要测试文件可能带有很多调用依赖,另外单元测试环境和真实环境可也能存在差异,使得脱离真实环境不能直接运行。...,mock function 会自动记录每次调用信息,例如我想拿到第 m 次被调用第 n 个参数,就可以通过 mock.calls 来访问到: var myMock = jest.fn(); myMock...在 Jest 中也不用像 mocha 那样通过执行 done 来通知异步结束,而是直接返回 Promise 和 async/await 就好。...最后总结一下,编写可测试代码,其实可以遵循这几个点来规范: 功能最小化,单一职责函数 抽离业务逻辑中公共部分 细分文件依赖 避免函数副作用(不修改实参) 其他还有很多可以优化点不再阐述,感兴趣推荐阅读一下

5.5K90

React + Redux Testing Library 单元测试

jest 作为项目 devDependencies 依赖: 一个简单函数 const sum = (a, b) => a + b module.exports = { sum } 然后创建一个...想象一下你正在测试一个 Order Class price() 方法,而 price() 方法需要在 Product 和 Customer Class 中调用一些函数。...}; }); }); 我们可以看到 jest.mock() 方法中第二个参数是一个函数,那么我们就可以完全接管整个 ....前端组件化已经让 UI 测试变得容易很多,每个组件都可以被简化为这样一个表达式,即 UI = f(data),这个纯函数返回只是一个描述 UI 组件应该是什么样子虚拟 DOM,本质上就是一个树形数据结构...然后我们就可以使用 Jest 模拟一个 action 行为再传给 store,而 actionClick 这个伪造函数能够让我们去断言该 action 是否被调用过。

2.3K10

【Kotlin 协程】Flow 异步流 ① ( 以异步返回返回多个返回值 | 同步调用返回多个值弊端 | 尝试在 sequence 中调用挂起函数返回多个返回值 | 协程中调用挂起函数返回集合 )

文章目录 一、以异步返回返回多个返回值 二、同步调用返回多个值弊端 三、尝试在 sequence 中调用挂起函数返回多个返回值 四、协程中调用挂起函数返回集合 一、以异步返回返回多个返回值 ----...| 协程 suspend 挂起函数 ) 博客 ; 如果要 以异步方式 返回多个元素返回值 , 可以使用如下方案 : 集合 序列 Suspend 挂起函数 Flow 异步流 二、同步调用返回多个值弊端...// 调用 " 返回 List 集合函数 " , 并遍历返回值 listFunction().forEach { // 遍历打印集合中内容..., 该函数 () -> Unit 是 SequenceScope 类型扩展函数 ; 任意传入一个匿名函数 , 该函数被自动设置为 SequenceScope 类扩展函数 , 在其中任何调用都默认调用是...---- 如果要 以异步方式 返回多个返回值 , 可以在协程中调用挂起函数返回集合 , 但是该方案只能一次性返回多个返回值 , 不能持续不断 先后 返回 多个 返回值 ; 代码示例 : package

8.2K30
领券