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

如何使用mocha & chai和sinon TDD测试被调用或不调用的类?

使用mocha & chai和sinon进行TDD测试时,可以通过sinon库提供的Stub来验证被调用或未被调用的类。

首先,确保已经安装了mocha、chai和sinon,可以通过npm进行安装:

代码语言:txt
复制
npm install mocha chai sinon --save-dev

接下来,创建一个测试文件,比如test.js,并在其中引入所需的库和要测试的类:

代码语言:txt
复制
const chai = require('chai');
const expect = chai.expect;
const sinon = require('sinon');

const MyClass = require('./MyClass'); // 要测试的类

describe('MyClass', () => {
  it('should call someMethod', () => {
    const myObject = new MyClass();

    const someMethodStub = sinon.stub(myObject, 'someMethod');

    myObject.doSomething();

    expect(someMethodStub.calledOnce).to.be.true; // 验证方法被调用一次

    someMethodStub.restore(); // 恢复原始方法
  });

  it('should not call someMethod', () => {
    const myObject = new MyClass();

    const someMethodStub = sinon.stub(myObject, 'someMethod');

    myObject.doSomethingElse();

    expect(someMethodStub.called).to.be.false; // 验证方法未被调用

    someMethodStub.restore(); // 恢复原始方法
  });
});

上述代码中,通过sinon的stub方法创建了一个myObject的someMethod方法的Stub,然后通过测试的代码来触发相应的调用。最后,使用chai的expect来验证Stub的调用情况。

这样,当运行mocha进行测试时,就可以验证被调用或未被调用的类的方法。

关于mocha & chai和sinon的更多信息,可以参考以下链接:

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

相关·内容

前端测试驱动开发模式(TDD)快速入门

当实现所有的测试用例,代码也就完成了。 最近也在实践Tdd开发,之前先开发,再自测方向不同,这次开发顺序是, 文档--->测试用例--->代码--->测试通过--->下一个测试用例。...前端TDD开发环境搭建 如果想应用Tdd方法到前端开发中,主要用到以下几个工具(工具用法在后面介绍): mocha.js mocha 主要提供了describe语法,用来描述测试用例,并且把执行测试结果清楚返回到终端上...test": "mocha test/**/*.js" } 复制代码 在test中建立一个js文件,在文件中引入这些工具,为了连接sinon chai,要使用sinon-chai const chai...) const assert = chai.assert // 从chai中引出assert 复制代码 如何实施TDD 如何写一个单元测试 首先我们看一个简单单元测试代码: describe('测试navigateTo...mocha,chai,sinon一些高级用法,还需要通过实践去学习。 另,本文只是对但纯js测试,react,vue小程序都有他们自己ui测试方案。

2.5K20

单元测试初体验

断言库 Chai Chai 是一个针对 Node.js 浏览器行为驱动测试测试驱动测试断言库,可与任何 JavaScript 测试框架集成。...启用禁用监视文件,当这些文件改变时,执行测试。 autoWatch: true, // 该值是要启动捕获浏览器列表。...// 如果该值为true,karma将会启动捕获配置浏览器,运行测试然后退出,退出使用代码01取决于测试是成功还是失败。...sinon.js 中 spy 主要用来监视函数调用情况,sinon 对待监视函数进行 wrap 包装,因此可以通过它清楚知道,该函数调用过几次,传入什么参数返回什么结果,甚至是抛出异常情况。...如果这样做,你测试可能会出现不可预知结果。 stub 使用 stub 来嵌入或者直接替换掉一些代码,来达到隔离目的。stub 是代码一部分。

1.6K20

前端自动化测试工具 overview

TDD vs BDD: TDD(Test Drivin Development)是测试驱动开发,强调是一种开发方式,以测试来驱动整个项目,即先根据接口完成测试编写,然后在完成功能时要不断通过测试,最终目的是通过所有测试...前端测试化工具简单汇总和比较 Qunit jquery出自动化测试库,没什么好说,可以想象其跟jquery UI及jquery animation等库结局一样,逃脱不了各种后来库全方位比较“...mocha: 优点: 终端显示友好 灵活,扩展性好 缺点: 自身集成度不高(没有断言,spy,异步等),而且经常要配合ChaiSinon等库使用 配置相对麻烦一点点 Jasmine: 优点:...两者功能覆盖范围粗略可以表示为: Jasmine(2.x) === Mocha + Chai + Sinon - mockserver PS: 个人实际使用后觉得ChaiSinon毕竟是专门做特定功能框架...,用 Mocha + Chai + Sinon 这种方式会想对舒爽一点。

2.3K110

前端自动化测试工具 overview

TDD vs BDD: TDD(Test Drivin Development)是测试驱动开发,强调是一种开发方式,以测试来驱动整个项目,即先根据接口完成测试编写,然后在完成功能时要不断通过测试,最终目的是通过所有测试...前端测试化工具简单汇总和比较 Qunit jquery出自动化测试库,没什么好说,可以想象其跟jquery UI及jquery animation等库结局一样,逃脱不了各种后来库全方位比较“...mocha: 优点: 终端显示友好 灵活,扩展性好 缺点: 自身集成度不高(没有断言,spy,异步等),而且经常要配合ChaiSinon等库使用 配置相对麻烦一点点 Jasmine: 优点:...两者功能覆盖范围粗略可以表示为: Jasmine(2.x) === Mocha + Chai + Sinon - mockserver PS: 个人实际使用后觉得ChaiSinon毕竟是专门做特定功能框架...,用 Mocha + Chai + Sinon 这种方式会想对舒爽一点。

1.4K10

React 测试驱动教程

Hello World Image 设置 MochaChaiSinon Enzyme Mocha:将用于运行我们测试Chai:是我们期待库。...AirBnB 写一个很漂亮测试库。 安装这些包: npm i mocha chai sinon --save-dev 如果我们希望能够使用 ES6 编写测试,那么我们需要在运行前对代码进行转译。...Enzyme 现在我们所需“普通”测试工具都已经设置好了(mochachaisinon),接着让我们安装 Enzyme,并且开始测试 React component!...接下来让我们测试一个组件安装调用函数,当它安装时,我们可以得到一些暴露在 sinon信息正在使用 spies。...我们可以假装 Root 组件有一个子组件叫 CommentList,在安装后将调用任意回调。当通过给定 props 组件安装时,函数调用,因此我们就可以测试这个场景。

4.6K20

12 款 JavaScript 代码测试必备工具

Chai Chai 是个支持 BDD / TDD 库,可用于 node 浏览器,可配合任何 JavaScript 测试框架使用。 04....Sinon Sinon.JS 为 JavaScript 提供了独立 spies、stubs mocks [译者注:Spy、Stub Mock 都是测试专用名词,Stub 常被翻译为桩,spies...是 Spy 复数形式,是一种可以监视方法、调用参数技术]。...每一个测试结果对应每个浏览器,它测试显示都是通过命令行暴露给开发者,这样他们就可以看到浏览器测试通过失败。 07. Selenium Selenium 有一个简单目标:就是自动化浏览器。...集成 TestRunner 同样允许你以同步方式调用异步命令,这样你不需要关心如何处理 Promise 以避免竞态条件。

2.2K100

使用mocha编写node服务单元测试

可以看到上述代码定义了一个describe组来测试getResult函数功能,里面有两个测试用例分别测试了入参正常非法入参情况。 而测试用例中如何来判断函数是否正常执行呢?...chai断言库 mocha可以搭配你喜欢任何断言库,经常使用chai断言库。 chai提供了多种风格语法去帮助我们判断函数执行结果。...sinon库提供了三种功能:spies、stubmock。 spies spies功能顾名思义就是间谍函数,它能帮助我们去收集监听函数有关调用信息。...spies作为sinon最简单功能,它不会对监听函数执行过程造成任何影响,stubmock功能都是基于spies实现。...本身是一个比较简单测试框架,在此基础上,我们使用一些npm包来加强我们测试过程: nyc: 提供全面的测试覆盖率 chai: 多种风格断言判断 sinon: 用于模拟或者替换难以测试代码 superTest

3.9K20

Vue 测试速成班

在本教程中,我将向你展示如何为 Vue 应用程序编写单元、集成端到端测试。 有关更多测试示例,可以查看我 Vue TodoApp 实现[1]。 1....Mocha 提供了 describe it 两个方法。describe 函数表示围绕测试单元组织测试用例:测试单元可以是、函数、组件等。...Mocha 没有内置断言库,所以我们必须使用 Chai :它可以设置对结果期望。Chai 有许多不同内置断言,但没有涵盖所有用例,缺失断言可以通过 Chai 插件系统导入。...我们可以使用 find 选择器在渲染 DOM 中搜索并获取它 HTML、文本、原生 DOM 元素。如果搜索是一个可能不存在片段,我们可以使用 exists 方法判断它是否存在。...Mocha 可以检测并等待异步函数完成。在函数内部,我们等待 onModify 方法完成,然后断言伪 commit 方法是否调用并传入了 post 调用返回参数。 10.

2.7K10

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

通过编写测试用例,可以做到一次编写,多次运行 解释性:测试用例用于测试接口、模块重要性,那么在测试用例中就会涉及如何使用这些API。...其他开发人员如果要使用这些API,那阅读测试用例是一种很好地途径,有时比文档说明更清晰 驱动开发,指导设计:代码测试前提是代码本身测试性,那么要保证代码测试性,就需要在开发中注意API设计...development(BDD)风格测试框架,在业内较为流行,功能很全面,自带asssert、mock功能 mocha: node社区大神tj作品,可以在nodebrowser端使用,具有很强灵活性...sinon.js: 目前使用最多mock库,将其分为spies、stub、fake XMLHttpRequest、Fake server、Fake time几种,根据不同场景进行选择。...但是当我们写组件、工具方法、时候,TDD就可以得到很好地使用。 4.3 BDD 行为驱动开发要求更多人员参与到软件开发中来,鼓励开发者、QA、相关业务人员相互协作。

1.5K20

为ES6配置JavaScript测试工具

以下示例使用了MocahChai,但原理同样适用于Jasmine。 基础 基本情况测试非ES6代码时一样。...在加载Chai时,我们使用了const而不是var。这意味着我们不会在不经意间重新定义该变量,并且它明确表明了我们希望修改它意图。 我们还使用了箭头函数。...避免在Sinon使用箭头函数 与Mocha类似,在Sinon.js中使用箭头函数也可能导致问题。 问题出在sinon.test上。...解决方案是要么在使用sinon.test时避免使用箭头函数,要么通过beforeEachafterEach来手工初始化释放测试替身: var sandbox; beforeEach(() => {...如何测试ES6 generators? Mocha支持Promise意味着当你需要测试带有Generator代码时,你可以使用来自co模块co.wrap方法。

2.9K20

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

现在,我们可以使用单元测试来提高自己代码质量。下面,我将自己在使用JestSinon.js配置编写单元测试收获经验踩到坑进行总结,根据从零开始配置编写单元测试这一条线来进行分享。...而对于其他测试框架如:Mocha或者Chai等,没有进行具体了解,因此在这里不多做评价。 如何配置Jest与Sinon.js,从而编写单元测试?...编写单元测试 在本章中,我们会针对如何编写单元测试文件进行一个具体讲解,其中包含: 同步函数测试 异步函数测试 HTTP测试 同时,我们会对当中使用JestSinon.jsAPI会进行简单介绍...('hjava'); // 判断了callback函数第一次调用第一个参数为'hjava' }); 从上面的示例中我们可以看到,针对同步纯函数,我们可以通过很简单单元测试模型来验证它功能。...附录 Jest Sinon.js ava ava关于配置解决webpack aliasissue Mocha Chai

3.7K00

web自动化测试(1):再谈UI发展史与UI、功能自动化测试

自动化测试分层 单元自动化测试(数据处理层): 单元测试(unit testing):是指对软件中最小可测试单元进行检查验证。 单元含义:单元就是人为规定最小测功能模块。...单元测试是在软件开发过程中要进行最低级别的测试活动,软件独立单元将在与程序其他部分相隔离情况下进行测试,如C语言中单元指一个函数,Java里单元指一个,图形化软件中可以指一个窗口一个菜单等...由tj大神开发 Jest: 由Facebook出品测试框架,在Jasmine测试框架上演变开发而来,集成了 Mocha,chai,jsdom,sinon等功能。...chai: 目前比较流行断言库,支持 TDD(assert),BDD(expect、should)两种风格 should.js:也是tj大神所写 前端集成管理工具 karma:负责自动化执行测试脚本,...大前端自动化工厂(5)—— 基于Karma+Mocha+Chai单元测试接口测试 https://blog.51cto.com/13869008/2175983 转载本站文章《web自动化测试(1

1.6K20

对 React 组件进行单元测试

React 单元测试中用到工具 Jest 不同于"传统"(其实也没出现几年) jasmine / Mocha / Chai 等前端测试框架 -- Jest使用更简单,并且提供了更高集成度、更丰富功能...一般使用 Enzyme 中 mount shallow 方法,将目标组件转化为一个 ReactWrapper对象,并在测试调用其各种方法: import Enzyme,{ mount } from...用测试驱动 React 组件重构 这里展开讨论经典测试驱动开发”(TDD - test driven development) 理论 -- 简单说,把测试正向加诸开发,先写用例再逐步实现,就是...React 单元测试常见案例 用例预处理后处理 可以用beforeEachafterEach做一些统一预置和善后工作,在每个用例之前之后都会自动调用: describe('test components...总结 单元测试作为一种经典开发重构手段,在软件开发领域广泛认可采用;前端领域也逐渐积累起了丰富测试框架方法。

4.3K40

打造前端工程测试体系(1)

BDD vs TDD 说起测试,需要先说一下主流测试类型,包括 BDD TDD,有点枯燥,但有必要有个简单了解,因为会影响选择如何测试策略。...BDD TDD 均有各自适用场景,BDD 一般更偏向于系统功能业务逻辑自动化测试设计,而 TDD 在快速开发并测试功能模块过程中则更加高效,以快速完成开发为目的。...当然你也可以使用 Jasmine QUnit 等。...编写测试脚本 我们先梳理下 MochaChai 测试脚本之间关系,如果不能够理解清楚,则后续讲解会比较懵。 Mocha 只是个测试框架,它作用是运行测试脚本。它不负责具体测试。...真实项目环境中,还有很多问题都需要解决,比如: 如何用 es6 语法来写测试用例? 如果代码中有 DOM 操作怎么测试如何在不同浏览器中进行测试使用 React 等框架时怎么测试

2.7K00

后selenium时代Web UI自动化测试框cypress

Inject script 方式是指在浏览器打开 Web 应用内注入测试引擎、测试用例等脚本,将测试用例执行在被测试应用运行时中(这跟使用selenium 调用js脚本是不一样) inject...与之相反是 inject script 选择从内部控制浏览器,测试用例代码将测试 Web 应用运行在同一个浏览器运行时中,可以理解为注入脚本即为测试客户端,与后端建立通信,所有的操作指令都是通过...Javascipt 实现并执行,本质上只是函数调用,客户端后端之间通信仅用于测试结果收集,包含具体指令执行 Chapter2 Inject script方案代表:Cypress 1 Cypress...对在浏览器中运行任何东西进行快速、简单可靠测试 当然是cypress 出现前:selenium方案 需要框架:Mocha Qunit Jasmine Karma 需要断言库:Chai Expect.js...我们给你尽快编码能力 特点七、运行速度飞一般感觉 这些架构上改进首次释放了使用完整端到端测试进行TDD能力。cypress已经是一个成熟框架,因此测试开发可以同时进行。

3.3K21

Vue自动化测试

单元测试 代码单元测试主要针对某些核心功能某些函数进行测试。vue官方推荐是使用karma,mochachai等。karma并不是一个测试框架,也不是一个断言库。...Karma兼容Jasmine,MochaQUnit,可以集成mocha,webpack等功能,成为以Karma为平台单元测试,官方选择mocha测试框架chai断言库。...frameworks: ['mocha', 'sinon-chai', 'phantomjs-shim'], // 测试框架 reporters: ['spec', 'coverage...it是对它需要完成某些功能描述,它里面是具体测试用例。在测试框架中,describe,it, expectsinon都是全局方法。...Chai Chai也就是一个非常简单断言库,所谓断言,就是预期某些执行结果符合你自己要求。所有的测试用例都应该含有一句多句断言。 expect(vm.

1.9K50
领券