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

Jest spyOn没有检测到我的函数调用

Jest是一个流行的JavaScript测试框架,而spyOn是Jest提供的一个函数,用于监视函数的调用情况。当使用spyOn函数监视一个函数时,它会替换原始函数,并返回一个新的mock函数,可以用于检测函数的调用次数、参数等信息。

如果Jest的spyOn没有检测到你的函数调用,可能有以下几个原因:

  1. 函数未被正确导入:首先要确保你正确地导入了要监视的函数。检查一下导入路径和文件名是否正确。
  2. 函数未被正确调用:确保你在测试代码中正确地调用了被监视的函数。检查一下函数的调用位置和参数是否正确。
  3. 函数被异步调用:如果被监视的函数是在异步代码中被调用的,可能会导致spyOn无法正确检测到函数的调用。在这种情况下,你可以考虑使用Jest提供的异步测试工具,如async/await或Jest的定时器模拟函数。
  4. 函数被其他模块修改或覆盖:如果被监视的函数在被导入后被其他模块修改或覆盖了,可能会导致spyOn无法正确检测到函数的调用。在这种情况下,你可以尝试使用Jest的jest.mock函数来模拟整个模块,以确保被监视的函数不会被修改或覆盖。

总结起来,如果Jest的spyOn没有检测到你的函数调用,你需要确保函数正确导入、正确调用,并注意处理异步调用和其他模块的修改或覆盖。如果问题仍然存在,可以进一步检查Jest的配置和版本,或者查阅Jest的官方文档和社区支持获取更多帮助。

腾讯云相关产品推荐:

  • 云函数(Serverless Cloud Function):腾讯云的无服务器计算产品,可用于快速部署和运行代码,支持多种语言和触发器方式。详情请参考:云函数产品介绍
  • 云开发(Tencent CloudBase):腾讯云的一站式后端云服务,提供云函数、云数据库、云存储等功能,可用于快速开发和部署应用。详情请参考:云开发产品介绍
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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

其中toEqual是jest提供匹配器,jest提供了非常多匹配器,这里列举一些常用: toBe:使用Object.is精准匹配 toEqual:相比toBe会做深层比较,一般用于检测对象值 toBeNull...resolves/rejects:Jest会等待异步函数执行完毕该方法应该和async/await配合使用 手动调用done:在我们没有调用done之前,当前测试不会结束,直至调用done方法,有点类似回调...toBeCalled(); }); }) 运行后发现fn被调用0次,测试用例并没有通过。...,js会先执行其他任务(expect),再执行微任务,这样导致我们fn断言时并没有调用。...,用于代替我们真实函数,可以通过该模块函数提供方法获取调用信息(.mock方法)。

10.2K20

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

到我测试用例,原因也就明确了:调用enqueueJob之后,catch中回调被加入了队列,而随后delay则相当于直接调用了setTimeout(前面说到Promise对象构造时回调函数是立刻执行...根据Jest官方文档,调用这个函数后,所有队列中“微任务”都会被立刻执行,这里目的就是保证catch回调能被立刻调用; 使用jest.advanceTimersByTime(6000)代替await...咳咳……也就是说,Promise所使用微任务队列又是另外一个微任务队列,并且不归Jest控制! 因此,问题也明确了:runAllTicks什么作用也没有发挥,我们回到了最初遇到问题。...提供spy函数,对setTimeout函数进行了拦截侦听,被调用时不做任何事。...断言通过后,我们再手动调用传入回调函数来模拟6s已经经过场景。

6.6K60

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

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

3.7K10

单元测试

@testing-library/jest-dom 是一个用于增强 Jest 测试框架库,它提供了一组用于 DOM 断言定制化匹配器和工具函数。...: 分支覆盖率,执行到每个 if 代码块; Functions: 函数覆盖率,调用到程序中每一个函数; Lines: 行覆盖率,执行到程序中每一行。...(); }); test("可以在 1000ms 后自动执行函数", () => { jest.spyOn(global, "setTimeout"); const callback...这样可以确保每个测试用例都在相同初始状态下运行,并且没有残留状态或影响。 在每个测试用例之后使用 afterEach 函数或 afterAll 函数来清理测试环境。...因此,callback 可在不确定时间和频率(在间隔以及 DOM 变化时调用)被调用(或者检查错误)。所以这也意味着你副作用可能会被多次调用

17710

React Hook测试指南

mock 在Jest框架中用来进行mock方法有很多,主要用到jest.fn()和jest.spyOn()。...jest.fn生成函数上面有很多属性,我们也可以通过一些matcher来对这个函数调用情况进行一些断言,下面是一个简单例子: // somewhere/functionWithCallback.js...我们源代码中函数可能使用了另外一个文件或者node_modules中安装一些依赖,这些依赖可以使用jest.spyOn来进行mock,下面是一个简单例子: // somewhere/sum.js...这样我们除了可以保证validateNumber不会影响到我们对sum函数逻辑测试,还可以在外面对validateNumberMock进行一些断言(assertion)来验证sum逻辑正确性。...,它第一个参数是一个callback函数,这个函数会在TestComponent每次被重新渲染时候调用,因此我们可以在这个函数里面调用我们想要测试hook。

1.7K10

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

如果test函数传入了done,jest就会等到done被调用才会结束当前test case,如果done没有调用,则该test自动不通过测试。...jest中与mock相关api主要有三个,分别是jest.fn()、jest.mock()、jest.spyOn()。使用它们创建mock函数能够帮助我们更好测试项目中一些逻辑较复杂代码。...jest.fn() jest.fn()是创建mock函数最简单方式,如果没有定义函数内部实现,jest.fn()会返回undefined作为返回值。...jest.spyOn() jest.spyOn()方法同样创建一个mock函数,但是该mock函数不仅能够捕获函数调用情况,还可以正常执行被spy函数。...实际上,jest.spyOn()是jest.fn()语法糖,它创建了一个和被spy函数具有相同内部代码mock函数。 Snapshot 快照测试 所谓snapshot,即快照也。

4.9K20

编写接口请求库单元测试与 E2E 测试思考

Unit Test 再说说单测,一般接口库也主要做这类测试比较多,因为单测不需要实际去访问接口,都是用 mock 方式去伪造一个数据,而用 Jest 的话就直接 spyOn 去 mock 掉整个请求方法了...你只需要测试自己业务逻辑就行了。 而对于这个库而言只需要测试有没有注入 adaptor 后,用 adaptor 请求数据之后有没有拿到了正确值。...如图所示,只需要测试 core 逻辑,也就是注入 adaptor 之后有没有正确使用 adaptor 去请求,以及用 adaptor 请求拿到数据之后有没有正确处理数据。...() 4 }) 5 test('case 1', async () => { 6 jest.spyOn(axiosAdaptor, 'get').mockImplementation...spyOn 掉了 adaptor get 方法,而要测试则是 core 层有没有正确使用 adaptor 访问了正确路径。

1K40

React 设计模式 0x8:测试

有两种方法可以实现这一点,包括以下内容: 功能测试 渲染测试 # 功能测试 功能测试是一种测试,用于验证函数按预期工作,这个测试通常根据被测试函数预期结果进行断言。...模拟函数 使用 模拟函数 来侦测(查看)我们函数调用情况,或者使用它来测试单个函数或整个模块。...在 Jest 中有以下三种类型模拟函数Jest.fn(用于模拟单个函数) Jest.mock(用于模拟整个模块) Jest.spyOn(用于查看函数调用情况) 更多信息请访问 https://jestjs.io...React 组件工具和函数 编写测试用例 编写完整测试用例,覆盖组件所有代码路径,包括正常情况和异常情况 使用快照测试 使用 Jest快照测试功能来验证组件是否按预期呈现 使用模拟数据...使用模拟数据来测试组件,以确保它们在不同数据情况下都能正常工作 使用模拟函数 使用模拟函数来模拟组件依赖项和外部接口,以便更好地控制测试环境 集成测试 编写集成测试来测试应用程序整个流程

1.8K10

浅谈前端测试

在第一个 test 里面我们改写 mocks.fs.readFileSync 返回形式,这里使用 mockImplementation 是直接模拟了一个执行函数,当然也可以模拟返回值,具体可以到...方法使得测试达到我们预期目的,在这个简单场景里面我们只需要模拟返回值就好   2.expect(console.log) 这里会报错,因为 jest 断言内容只能是 mock function...或 spy,这里 console 是全局对象 global 上方法,我们没有 require 将其引入,所以 jest.mock 显然处理上有些吃力,这时候 spy 就派上用场了,beforeAll...钩子里直接执行 jest.spyOn(global.console, 'log'),接下来我们就能监听到 console.log 执行了 expect(global.console.log)   3....  那就聊一聊解决方案   mock 数据随机化,每次测试生成随机 list 进行测试,现有库 mockjs   强关联测试,证明 map 方法的确执行了,并且参数正确,先 spy spyOn(Array.prototype

1.7K10

前端单元测试那些事

分支覆盖率(branch coverage)是否每个函数调用了? 函数覆盖率(function coverage)是否每个if代码块都执行了?...当我们完成单元测试覆盖率达不到100%,不用慌,不用过度追求100%覆盖率,把核心功能模块测通即可,当然如果你要设置最低覆盖率检测,可以在配置中加入如下,如果覆盖率低于你所设置阈值(80%),则测试结果失败不通过...API,分别是jest.fn()、jest.spyOn()、jest.mock() jest.fn() - 是创建Mock函数最简单方式,如果没有定义函数内部实现,jest.fn()会返回undefined...对象执行了回调函数 注:有时候会存在一种情况,在同个组件中调用同个方法,只是返回值不同,我们可能要对它进行多次不同mock,这时候需要在beforeEach使用restoreAllMocks方法重置状态...mock目的: 设置函数返回值 获取获函数调用情况 改变原本函数内部实现 4. ️

4.3K40

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

本文目标 在 TDD 做完 Tasking 列完实例化数据之后,完全没有 UT 基础不知道该怎么写单元测试? // Given 一个完全没有UT基础新人? // When 当他?...,一般来说就是调用相应模块执行对应函数或方法 Then Assert 断言,这时需要借助就是 Matchers 能力,Jest 还可以扩展自己 Matcher 在 expect 后面的 toBe...想象一下你正在测试一个 Order Class price() 方法,而 price() 方法需要在 Product 和 Customer Class 中调用一些函数。...}; }); }); 我们可以看到 jest.mock() 方法中第二个参数是一个函数,那么我们就可以完全接管整个 ..../video'); it('plays video', () => { const spy = jest.spyOn(video, 'play'); const isPlaying = video.play

2.2K20

实例入门 Vue.js 单元测试

', function() { ... }); ... }); 1.6 spy 正如 spy 字面的意思一样,我们用这种“间谍”来“监视”函数调用情况 通过对监视函数进行包装,...可以通过它清楚知道该函数调用过几次、传入什么参数、返回什么结果,甚至是抛出异常情况。...(function coverage):是否每个函数调用了 行覆盖率(line coverage):是否每一行都执行了 测试结果根据覆盖率被分为“绿色、黄色、红色”三种,应该关注这些指标,测试越全面,...同时也没有必要一味追求行覆盖率,因为它会导致我们过分关注组件内部实现细节,从而导致琐碎测试。 II....(obj, "func1"); const spy2 = jest.spyOn(obj, "func2"); const wrapper = shallowMount(NumStepper

2.8K20
领券