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

子模块方法上的SpyOn在jasmine中不返回spy

在Jasmine测试框架中,SpyOn是一种方法,用于监视和跟踪函数的调用情况,以及对函数进行模拟操作。然而,对于子模块方法上的SpyOn,在某些情况下可能不会返回spy对象。

子模块方法是指在一个对象的属性中定义的函数,通常用于模块化开发和组件化架构。SpyOn函数在jasmine中用于创建一个spy对象,以便在测试过程中对被监视函数进行调用、返回值等各种操作。

然而,在某些情况下,当我们尝试在子模块方法上使用SpyOn时,它可能不会返回spy对象。这可能是由于以下几个原因:

  1. 函数未正确导出:如果子模块方法没有正确导出,在测试过程中将无法获得对其的访问权限,因此SpyOn将无法返回spy对象。
  2. 作用域问题:子模块方法的作用域可能会导致SpyOn无法正确返回spy对象。这可能是因为子模块方法在其所属对象的作用域内执行,而不是在全局作用域中执行。

在解决这个问题时,我们可以尝试以下几个步骤:

  1. 确保子模块方法正确导出并且在测试文件中正确导入。这可以通过检查导出和导入语句是否正确以及文件路径是否正确来完成。
  2. 使用适当的作用域访问子模块方法。如果子模块方法在其所属对象的作用域内执行,我们可以通过访问对象的属性来获得对该方法的引用,并在该方法上使用SpyOn。
  3. 如果以上步骤仍然无法解决问题,可以尝试使用其他方法来模拟和跟踪子模块方法的调用情况。例如,可以考虑使用Jasmine的createSpyObj方法创建一个包含所需方法的模拟对象,并在测试过程中使用该模拟对象进行操作和断言。

总结起来,子模块方法上的SpyOn在jasmine中可能不返回spy对象的原因是函数未正确导出或作用域问题。为了解决这个问题,我们应该确保正确导出和导入子模块方法,并在合适的作用域中访问它。如果问题仍然存在,可以尝试使用其他方法来模拟和跟踪子模块方法的调用情况。

相关搜索:在使用jasmine的服务测试中,Spy返回值无法正常工作在方法中不返回任何内容,其中方法具有返回某些内容的定义是否可以在silverstripe子站点模块中的所有子站点上显示特定页面?在子子延迟加载模块中的解析器服务上的Angular 9 NullInjectorError如何防止XMLAGG在不返回任何行的子查询中创建行?无法在elixir中的方法上获取返回值映射在Laravel 6.0中,有没有在子选择上使用聚合器的方法?在不创建对象的情况下,在方法中返回各种数据类型在Python中使用父目录中的其他模块的模块(在子目录中)上编写单元测试的正确方法是什么如何修复我代码中的'`render`方法在返回的组件实例上找到‘’错误?在T-SQL中关联大表上的子查询的最有效方法是什么?使用子进程模块在Python中执行管道命令的任何方法,而不使用shell = True?在ios的getPhotos和getAlbums方法中,React原生摄像机胶卷不返回任何图像在伪造查看器中,当在移动设备上打开站点时,onSelectionEvent this.viewer.getProperties()方法不返回属性信息在graphql中,有没有一种方法可以返回满足父元素和子元素上所有过滤器的数据?这是在ASP.net WebForms中删除web.config模块标记中的"runAllManagedModulesForAllRequests“而不丢失其功能的方法吗?用于检查数组列表的子字符串的方法和循环在Java中似乎没有返回正确的值在Typescript中,如何在工厂(Ish)函数中实例化的类上获取方法的泛型返回类型Node.JS快速- POST请求不工作(返回404) -在端口8080上的子目录中运行使用findByIdAndUpdate的NodeJS + Mongoose修补方法不返回任何内容,即使设置了新的:在选项中设置为true
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Angular2 之 单元测试

)真实服务 注入了真是的服务,并使用Jasminespy替换关键getXxxx方法。...it方法几个函数 写单元测试时,it里经常会有几个常见方法,async(),fakeAsync(),tick(),jasmine.done()方法等。...通过将测试代码放到特殊异步测试区域来运行,async函数简化了异步测试程序代码。 接受无参数函数方法返回无参数函数方法,变成Jasmineit函数参数。...compileComponents 本例,TestBed.compileComponents编译了组件,那就是DashbaordComponent。 它是这个测试模块唯一声明组件。...第二点就是模拟时候,我竟然傻傻自己去spec文件自己去new了BaseDataRemoteService,所以我根本没有办法去执行spyOn(foo, "getBar")这样模拟,然后就是一直出错

5.5K20

实例入门 Vue.js 单元测试

单元测试简介 单元测试(unit testing),是指对软件最小可测试单元进行检查和验证。 简单来说,单元就是人为规定最小被测功能模块。...这些语义化方法返回测试结果,要么成功、要么失败。常见断言库有 Should.js, Chai.js 等。...对于某些不容易构造或者不容易获取对象,用一个虚拟对象来创建以便测试测试方法 广义讲,以上 spy 和 stub 等,以及一些对模块模拟,对 ajax 返回模拟、对 timer 模拟,都叫做...(spy2).toHaveBeenCalled(); }) }); 注:该示例只是检验了是否被点击,还可以引入 sinon 相关方法检验传入参数等,写出更完备测试。...单元测试可以为我们开发和维护提供基础保障,使我们思路清晰、心中有底情况下完成对代码搭建和重构。 封装好则测试易,反之恰当封装让测试变得困难。

2.9K20
  • 【干货分享】微信小程序单元测试攻略

    方法和sinon.spy一样,生成函数“间谍”,可以断言该函数已调用次数、调用入参、调用返回等是否符合预期。...只是调用方法时候需要改为页面的方法,例如对于加载完事件,组件调用ready,页面调用onload。...2.3.3 完整断言方法 2.3.4 模拟数据mock 当被测方法包含环境因素不能直接测试时,例如使用了localStorage,又或者被测方法调用了接口,希望测试时调用接口影响业务或降低测试速度...其实是mock时候,就将这个方法放在cache,当其他地方要import方法时,会先查看cache中有没有该方法,如果我们有mock了,他就使用mock方法了。...如果cache没有该方法,再使用正常方式import。

    2.7K40

    浅谈前端测试

    ,先别急着纠错,这段测试本身是错,下面慢慢分析   我们最开始创建了一个 mocks 对象,用来模拟数据,由于 readFileSync 方法可能存在多种返回结果(成功或报错),所以暂时用 jest.fn...() 模拟   other 里面则是放一些固定测试数据(不会随着测试过程而改变)   beforeAll 钩子里面执行我们 mock,把 require 进来 fs 模块拦截调,也是本测试用例关键步骤...  第一个 test 里面我们改写 mocks.fs.readFileSync 返回形式,这里使用 mockImplementation 是直接模拟了一个执行函数,当然也可以模拟返回值,具体可以到...或 spy,这里 console 是全局对象 global 方法,我们没有 require 将其引入,所以 jest.mock 显然处理上有些吃力,这时候 spy 就派上用场了,beforeAll...  那就聊一聊解决方案   mock 数据随机化,每次测试生成随机 list 进行测试,现有库 mockjs   强关联测试,证明 map 方法的确执行了,并且参数正确,先 spy spyOn(Array.prototype

    1.7K10

    对 React 组件进行单元测试

    这些语义化方法返回测试结果,要么成功、要么失败。常见断言库有 Should.js, Chai.js 等。...对于某些不容易构造或者不容易获取对象,用一个虚拟对象来创建以便测试测试方法 广义讲,以上 spy 和 stub 等,以及一些对模块模拟,对 ajax 返回模拟、对 timer 模拟,都叫做...,我们指定了测试“根目录”,配置了覆盖率(内置istanbul)一些格式,并将原本webpack对样式文件引用指向了一个空模块,从而跳过了这一对测试无伤大雅环节 //NullModule.jsmodule.exports...; }); ... }); 调用组件“私有”方法 对于一些组件,如果希望测试阶段调用到其一些内部方法,又不想对原组件改动过大,可以用instance()取得组件类实例...expect( spy ).toHaveBeenCalledTimes( 1 ); done(); }, 550); }); 一些全局和单例模拟 一些模块可能耦合了对 window.xxx

    4.3K40

    JavaScript 测试系列实战(三):使用 Mock 模拟模块并处理组件交互

    之前两篇教程,我们学会了如何去测试最简单 React 组件。实际开发,我们组件经常需要从外部 API 获取数据,并且组件交互逻辑也往往更复杂。...axios 模块提供了一个 get 函数,并且会返回一个 Promise,包含预先设定假数据。...通过 spyOn 函数检查 Mock 模块调用情况 让我们开始 Mock 起来!...postSpy.mock.results 是 post 函数发送结果数组,通过使用它,我们可以得到返回 promise,我们可以从 value 属性取到这个 promise。...从测试返回 promise 是确保 Jest 等待其异步方法执行结束一种方法。 小结 本文中,我们介绍了 mock 模块,并将其用于伪造API调用。

    4.8K20

    用 jest 单元测试改善老旧 Backbone.js 项目

    对于这样既有项目,之前文章也进行过分析,常常面临依赖不清、封装混乱,以及缺乏测试等问题;对之进行维护和新需求开发时,结合其本身特点, TDD 方式下进行渐进改善,而非推倒重来,无疑是个可行办法...Backbone.js / Require.js 技术栈回顾 Require.js 模块化 ? 首先说 Require.js,没有 webpack 日子里,这是最常见模块化管理工具。...实际项目中,我们采用了 ES6 语法和 ESM 模块规范来编写源文件,并借助 babel 将其转译为 UMD 模块;最后通过 Require.js 提供优化工具 r.js 来打包,并由 Require.js...Backbone 请求,包括 Backbone.sync / model.fetch() 等, 本质还是调用 jQuery $.ajax 方法(默认情况下),也就是传统 xhr 方式,使用...目标项目的很多页面,没有合理封装出组件,而仅仅是把需要复用部分 html 提取成模板,本页面“拼装”多个子模板,或和其他页面复用。

    3.5K10

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

    对于UI层多变上,我们应该尽量满足我们公共方法和核心逻辑测试覆盖,UI若有强烈需求再进行覆盖,因为在业务开发,UI单测投入回报率并不高且是多变并不需要刻意为了单测而单测。...针对jest.mock与jest.spyOn产生一系列关联API,如下: 方法 作用 jest.mock 模拟整个模块 jest.spyOn 模拟一个特定功能 jest.clearAllMocks...而jest.mock调用方式有所不同。Jest接管require系统,jest.mock告诉Jest,它在需要时应返回模块模拟,而不是实际模块。...这意味着模块模拟不会包装原始模块,它会完全替换require系统原始模块。因此,mockRestore可以模拟模块模拟函数上定义,但是调用它不会恢复原始实现。...这里分别使用了jest.spyOn和jest.Mock两个方式对同一个方法进行3种不同编写方式测试,实际情况我们应该选择合适方法

    10.3K20

    React + Redux Testing Library 单元测试

    但这时需要注意是,该模板所有功能都已经被 Mock 掉,而不会再从原模块当中返回,所以我们就需要重新实现该模块所有功能。...比如说上文中 video 模块 play() 方法已经被 spy 过,那么之后 play() 方法只要被调用过,我们就能判断其是否执行,甚至执行次数。 如何 Mock 全局方法?...单元测试,通常我们希望将重点放在作为独立单元进行测试组件,并避免间接断言其组件行为。...从技术讲,你可以真实浏览器运行,但由于不同平台上启动真实浏览器复杂性,更建议使用 JSDOM 虚拟浏览器环境运行 Node 测试。...推荐使用 mount 方法是依赖于一个名为 jsdom库,它本质是一个完全 JavaScript 实现 headless 浏览器。

    2.3K10

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

    ,一般来说就是调用相应模块执行对应函数或方法 Then Assert 断言,这时需要借助就是 Matchers 能力,Jest 还可以扩展自己 Matcher expect 后面的 toBe.../sound-player 这个文件当中 export 出来,而被 Mock 之后我们测试就可以使用 Mock 所返回数据或方法,从而保证模块返回内容是我们所期望。...但这时需要注意是,该模板所有功能都已经被 Mock 掉,而不会再从原模块当中返回,所以我们就需要重新实现该模块所有功能。...比如说上文中 video 模块 play() 方法已经被 spy 过,那么之后 play() 方法只要被调用过,我们就能判断其是否执行,甚至执行次数。 如何 Mock 全局方法?...从上文一些例子当中,我们也可以看到,不管是 Fake/Stub/Mock/Spy 最最重要一个原则就是「简单」,因为我们是写测试代码,而所依赖模块就应该以最简单形态展现出来,绝不要给 jest.fn

    2.2K20

    React Native 持续部署实践— push 代码构建出新版 Growth

    持续集成:Travis CI 我 GitHub 创建开源项目的时候,都喜欢用 Travis CI 来作为持续集成服务器。... Growth 里,我们配置 Travis CI 来做下面的一些事情: 配置基础环境 Travis CI 改用了 Node.js 包管理工具 npm 为 yarn,并使用了缓存机制来加速构建...如下是一个 Jest 测试示例: it('should open market in browser', () => { const spy = jest.spyOn(Helper, 'openLink.../'); }); 唯一比较麻烦是,当我们要测试原生组件,需要在 jest.setup.js mock 这些方法,如下是用来 mock 包 react-native-device-info ...onPress 等方法,就需要配置 enzyme 来使用: it('test click book', () => { const spy = jest.spyOn(SkillDetailView

    2.1K50

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

    Mock 介绍jestmock之前,我们先来思考一个问题:为什么要使用mock函数? 项目中,一个模块方法内常常会去调用另外一个模块方法。...单元测试,我们可能并不需要关心内部调用方法执行过程和结果,只想知道它是否被正确调用即可,甚至会指定该函数返回值。这个时候,mock意义就很大了。...我们测试也主要是用到了mock函数提供以下三种特性: 捕获函数调用情况 设置函数返回值 改变函数内部实现 下面,我将分别介绍这三种方法以及他们实际测试应用。...jest.spyOn() jest.spyOn()方法同样创建一个mock函数,但是该mock函数不仅能够捕获函数调用情况,还可以正常执行被spy函数。...实际,jest.spyOn()是jest.fn()语法糖,它创建了一个和被spy函数具有相同内部代码mock函数。 Snapshot 快照测试 所谓snapshot,即快照也。

    5K20

    前端自动化测试工具 overview

    超越” Mocha && Jasmine Mocha 跟 Jasmine 是目前最火两个单元测试框架,基本目前前端单元测试就在这两个库之间选了,下面是这两个库区别,大家可以根据自己需求进行选择:...mocha: 优点: 终端显示友好 灵活,扩展性好 缺点: 自身集成度不高(没有断言,spy,异步等),而且经常要配合Chai,Sinon等库使用 配置相对麻烦一点点 Jasmine: 优点:...集成度高,自带BBD,spy,方便异步支持(2.0) 配置方便 缺点: 相对不太灵活 由于各种功能内建,断言方式或者异步等风格相对比较固定 没有自带mockserver, 如果需要这功能得另外配置...,可以让你在node对真实浏览器dom进行操作和测试,不同就是Phantomjs基于webkit(chrome),而Slimer则基于 Gecko(firefox)。...等各种浏览器环境或者 Phantomjs等无头浏览器环境 可控制自动化测试流程,比如编辑器保存时自动全部全部测试用例 强大适配器,可以karma上面配置jasmine,mocha等单元测试框架。

    2.3K110

    前端自动化测试工具 overview

    超越” Mocha && Jasmine Mocha 跟 Jasmine 是目前最火两个单元测试框架,基本目前前端单元测试就在这两个库之间选了,下面是这两个库区别,大家可以根据自己需求进行选择:...mocha: 优点: 终端显示友好 灵活,扩展性好 缺点: 自身集成度不高(没有断言,spy,异步等),而且经常要配合Chai,Sinon等库使用 配置相对麻烦一点点 Jasmine: 优点:...集成度高,自带BBD,spy,方便异步支持(2.0) 配置方便 缺点: 相对不太灵活 由于各种功能内建,断言方式或者异步等风格相对比较固定 没有自带mockserver, 如果需要这功能得另外配置...,可以让你在node对真实浏览器dom进行操作和测试,不同就是Phantomjs基于webkit(chrome),而Slimer则基于 Gecko(firefox)。...等各种浏览器环境或者 Phantomjs等无头浏览器环境 可控制自动化测试流程,比如编辑器保存时自动全部全部测试用例 强大适配器,可以karma上面配置jasmine,mocha等单元测试框架。

    1.4K10

    React 测试驱动开发:从用户故事到产品

    本文中,我们将采用 测试驱动开发(TDD:test-driven development) 方法,从用户故事到产品开发一个 React 应用。...配置 CSS 我们来编写基础 CSS reset,因为想让 CSS variables 应用全局可用,也将在 :root 作用域中定义一些变量。...添加 App 样式 接下来我们 src/components/App 目录创建一个 App.css 文件,增加一些 App 组件样式: .app-container { height: 100vh...(spy).toHaveBeenCalledTimes(1); }); it('点击 Reset 按钮时调用 resetTimer 方法', () => { const spy = jest.spyOn...总结 当使用 TDD 开发应用时,不仅将项目分解为史诗和用户故事,同时也要准备好验收准则,这是非常重要本文中,展示了上述方法对 React TDD 开发帮助。

    3.3K30

    使用Enzyme测试React(Native)组件|洞见

    Enzyme理论应该与所有TestRunner和断言库相兼容,已经集成了多种测试类库,比如Jest、Mocha&Chai、Jasmine,不过这些不是我们今天重点。...它本质是一个完全JavaScript实现headless浏览器。...Enzyme API 方法 find() 方法与选择器 从前面的示例代码可以看到,无论哪种渲染方式所返回wrapper都有一个.find()方法,它接受一个selector参数,然后返回一个类型相同...在这个对象基础,at方法则可以返回指定位置组件,simulate方法可以在这个组件模拟触发某种行为。...EnzymeSelectors即选择器类似于CSS选择器,但是只支持非常简单CSS选择器,如果需要支持复杂CSS选择器,就需要引入react-dom模块findDOMNode方法,而这是官方

    2.4K40

    前端单元测试总结_javascript单元测试

    通过编写测试用例,可以做到一次编写,多次运行 解释性:测试用例用于测试接口、模块重要性,那么测试用例中就会涉及如何使用这些API。...有测试用例做后盾,就可以大胆进行重构 2.前端相关单元测试技术 2.1 测试框架 目前,前端测试框架很多,像QUnit、jasmine、mocha、jest、intern等框架,这些框架各有特点,...,基于should.js,是mini版BDD库 assert(node自带核心模块): 可以node中使用断言模块 2.3 mock库 先来说说为什么需要mock吧:需要测试单元依赖于外部模块...,而这些依赖模块具有一些特点,例如不能控制、实现成本较高、操作危险等原因,不能直接使用依赖模块,这样情况下就需要对其进行mock,也就是伪造依赖模块。...但是当我们写组件、工具方法、类库时候,TDD就可以得到很好地使用。 4.3 BDD 行为驱动开发要求更多人员参与到软件开发来,鼓励开发者、QA、相关业务人员相互协作。

    1.5K20

    12 款 JavaScript 代码测试必备工具

    Jasmine Jasmine 是一个行为驱动测试开发框架,用于对 JavaScript 代码进行测试。它不依赖其它任何 JavaScript 框架,也不需要 DOM。...是 Spy 复数形式,是一种可以监视方法、调用和参数技术]。...它使用强大 W3C WebDriver API ,用于 DOM 元素执行命令和断言。 10....针对 PhantomJS, CasperJS 和 PhantomCSS NodeJS 包装器—— PhantomFlow 能够流畅地代码描述用户流程,同时生成用于可视化结构化树数据。...Percy.io Percy 提供关于视觉变化迭代及快速反馈,带来了所谓连续视觉集成。它是通过下面方式实现:运行测试套件,获取 DOM 快照并上传到 Percy 服务,最终浏览器渲染之。

    2.2K100

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

    较大规模前端项目中,测试对于保证代码质量十分重要,而React组件化和函数式编程, 这种相同输入一定返回相同输出幂等特性特别适合单元测试。...创建一个mock函数,该mock函数不仅捕获函数调用情况,还可以正常执行被spy函数。..._onClear).toBeCalled();//测试组件实例方法是否被调用 九、Redux测试 使用React或者React Native时通常会使用Redux进行状态管理,需要mock store...,携程持续集成流程再接入sonar, 可以查看完整单元测试报告。...携程租车前端单元测试实践,我们总结出几个要点: 将待测试组件当成黑盒,不用考虑内部逻辑实现; UI改动频繁,优先保证公用组件,工具函数,核心代码单元测试; 模拟数据尽量真实; 多考虑边界条件情况

    6.1K30
    领券