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

对未导出函数的Mocha单元测试返回'xx is not a function‘

对未导出函数的Mocha单元测试返回'xx is not a function'是因为在测试代码中调用了一个未导出的函数,导致Mocha无法识别该函数并报错。

Mocha是一个流行的JavaScript测试框架,用于编写和运行单元测试。它支持多种测试风格和断言库,并提供丰富的功能和插件,使得测试代码编写和执行更加简单和灵活。

在进行单元测试时,我们通常会将被测试的代码模块导出为一个模块,然后在测试代码中引入该模块,并调用其中的函数进行测试。但是,如果在测试代码中调用了一个未导出的函数,Mocha会抛出一个错误,提示该函数不是一个可用的函数。

为了解决这个问题,我们需要确保在测试代码中只调用已经导出的函数。可以通过以下几个步骤来解决:

  1. 确保被测试的代码模块中的函数被正确导出。可以使用模块化的方式,如CommonJS或ES6模块,将函数导出为模块的一部分。
  2. 在测试代码中使用合适的导入语法引入被测试的代码模块。例如,在Node.js环境中可以使用require语句,而在浏览器环境中可以使用import语句。
  3. 在测试代码中只调用已经导出的函数。可以通过查看被测试的代码模块的文档或源代码,确定哪些函数是可以被调用的。

如果在Mocha单元测试中仍然遇到'xx is not a function'的错误,可以检查以下几个可能的原因:

  1. 函数名拼写错误:确保在测试代码中正确地引用了被测试的函数,并且函数名没有拼写错误。
  2. 导入语句错误:检查测试代码中的导入语句,确保正确引入了被测试的代码模块。
  3. 函数未导出:确认被测试的函数是否被正确导出为模块的一部分。可以查看被测试的代码模块的文档或源代码,确保函数被导出。

总结起来,对未导出函数的Mocha单元测试返回'xx is not a function'是因为测试代码中调用了一个未导出的函数。为了解决这个问题,需要确保被测试的函数被正确导出,并在测试代码中使用正确的导入语法引入被测试的代码模块。同时,需要注意函数名的拼写和导入语句的正确性。

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

相关·内容

大前端的自动化工厂(5)—— 基于Karma+Mocha+Chai的单元测试和接口测试

前端自动化测试 大多数前端开发者对测试相关的知识是比较缺乏的,一来是开发节奏很快,来不及写,另一方面团队里也配备了“人肉测试机”,完全没必要自己来。...但随着项目体量的增大,许多人维护同一份代码,经常会出现有些函数莫名其妙地结果不对了,或者某个接口的入参变了,又或者哪位大哥把后端返回的数据结构给改了。...Mocha的基本语法 describe('我现在要测某一个页面的几个功能',function(){ describe('现在要测XX功能',function(){ it('某个变量的值应该是数字...基于Chai的自动化单元测试 单元测试的原理并不算复杂,相当于另外编写了一套程序,把业务逻辑中的脚本文件当做模块引入,模拟其运行环境(例如需要的浏览器类型,全局变量等),然后使用一组或若干组覆盖不同使用场景的参数来调用想要测试的函数单元...,并判断函数返回的结果是否和预期的相同。

1.3K20

JavaScript单元测试利器Jest+mocha+chai

一:mocha介绍mocha是一款功能丰富的javascript单元测试框架,它既可以运行在nodejs环境中,也可以运行在浏览器环境中。...mocha可以良好的支持javascript异步的单元测试。 mocha会串行地执行我们编写的测试用例,可以在将未捕获异常指向对应用例的同时,保证输出灵活准确的测试结果报告。...2.2JavaScript数据类型Undefined:使用var声明变量但是未进行初始化,对未初始化的变量及未声明的变量使用typeof运算符均会返回undefined;undefined的变量和null...我们使用boolen()对各种数据类型的变量进行强制转换时的规则如下:非空字符串,非零数值,非空对象进行boolen()转换时返回true。...2.5JavaScript中的函数函数就是包裹在花括号中的代码块,前面使用了关键词 function:function func_name(var1,var2) { 执行代码 }当调用该函数时,会执行函数内的代码

63220
  • 如何用 JavaScript 编写你的第一个单元测试

    light:将当前交通灯颜色作为字符串返回的类的属性。 next():更改交通灯为下个颜色的函数。 添加单元测试 是时候为代码添加单元测试了。 在项目的目录下创建名为test的文件夹。...这里是Mocha默认检查单元测试的地方。在test文件夹下添加traffic.test.js文件。...在终端窗口中运行npm test,如果一切正常,Mocha会打印出单元测试运行的结果。...创建一个新的子组,并添加两个单元测试:一个用来检查灯是否按顺序正确切换,另一个用来检查在循环到红色后是否返回到绿色。...从我们的单元测试中,我们知道这个函数没有正确地返回到绿色。我们可以看到,目前的代码在lightIndex值超过交通灯颜色的数量时进行检查,但索引是从0开始的。

    91120

    手把手,带你编写你的第一个单元测试

    对代码进行单元测试,我们不仅仅要确保函数在输入正确的值时,有正确的输出,还要确保函数在输入错误参数时,运行的结果是失败的。这些对错误的检查更有利于我们预测引发错误的原因以及场景。...拆分复杂的函数 对功能逻辑复杂的函数,编写单元测试是十分困难的。我们要把复杂的函数拆分为相对较小的函数来进行单元测试。避免测试时涉及数据的请求(数据库and网络请求) 单元测试应该是快速和轻量级的。...如何编写单元测试 现在我们都已经对单元测试有了一定的了解了,那我们就着手开始编写我们的第一个单元测吧!!! 这次我将带着大家使用Mocha框架--市面上比较主流的测试框架之一。...都赋值为0 this.lightIndex = 0; } // 定义我们的静态函数colors,只要一调用就返回函数 static get colors () { return ["green...lightIndex:一个指示当前交通灯颜色的Index的变量。light():一个返回当前交通灯颜色的函数。next():一个改变当前交通灯颜色的函数,使交通灯指向下一个颜色。

    19920

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

    单元测试流程 编写单元测试代码的流程基本就是 梳理代码流程 -> 针对每一个分支编写单元测试 -> 运行单测代码 -> 查看测试覆盖率报告。...null, '函数非法入参执行错误') }) }) 每一份单元测试脚本都应该至少包含一个describe模块,describe定义了一组逻辑相关的测试组,第一个入参是测试组的名称,第二个入参是交给...mocha框架执行的函数。...mocha提供了两种方法来解决这个问题: promise 我们可以返回一个promise给mocha框架,等到promise的状态改变时再执行断言: it('测试异步函数', function() {...done it方法的第二个入参是一个执行函数,我们可以给这个函数传入一个done方法,等到异步返回后再去显示地调用done方法,告诉mocha该测试用例执行完毕。

    4K20

    单元测试 & mocha 简述

    本文作者:IMWeb 黎清龙 原文出处:IMWeb社区 未经同意,禁止转载 单元测试 & mocha 简述 1....单元测试 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证 这个最小测试单元,可以是一个函数,可以是一个类,可以是一个对象,也可以是一个组件,一个插件 在软件开发周期中,...举个例子 说了那么多,下面举个例子: 现在我们写一个数组去重的函数,并对这个函数进行单元测试,如下: var should = require('should'); function unique(...我们这里只测试了两个用例: 当传入数组是null或者是空数组的时候,返回的是空数组 应该返回一个新数组,并且是去重 实际上,每个测试用例都应该是遵循SPR的,前面两个测试用例都应该分开一些的,但为了篇幅考虑就组合到一起了...3 小结 从上面的例子我们可以看到,利用mocha框架来构建单元测试用例是很简单的,构建的测试用例也非常简洁 另外,通过例子我们可以看到,在编写测试用例的时候是可以和代码本身分离的,读者可以看下测试用例的代码

    76610

    单元测试 & mocha 简述

    单元测试 & mocha 简述 1....单元测试 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证 这个最小测试单元,可以是一个函数,可以是一个类,可以是一个对象,也可以是一个组件,一个插件 在软件开发周期中,...举个例子 说了那么多,下面举个例子: 现在我们写一个数组去重的函数,并对这个函数进行单元测试,如下: var should = require('should'); function unique(...我们这里只测试了两个用例: 当传入数组是null或者是空数组的时候,返回的是空数组 应该返回一个新数组,并且是去重 实际上,每个测试用例都应该是遵循SPR的,前面两个测试用例都应该分开一些的,但为了篇幅考虑就组合到一起了...3 小结 从上面的例子我们可以看到,利用mocha框架来构建单元测试用例是很简单的,构建的测试用例也非常简洁 另外,通过例子我们可以看到,在编写测试用例的时候是可以和代码本身分离的,读者可以看下测试用例的代码

    82590

    写代码无BUG,网易云前端单元测试方案总结

    我希望通过对这些工具的各自作用的掌握,了解完整的前端测试技术方案。前端单元测试的领域也很多,这里主要讲对于前端组件如何进行单元测试,最后会主要介绍下对于 React 组件的一些测试方法总结。...通用测试 单元测试最核心的部分就是做断言,比如传统语言中的 assert 函数,如果当前程序的某种状态符合 assert 的期望此程序才能正常执行,否则直接退出应用。...AMD 需要全局引入 RequireJS,对单元测试而言比较典型的问题是在初始化 karma 时会询问是否使用 RequireJS ,不过一般现在很少有人使用了。...所以使用 Karma + mocha +chai 即可搭建一个完整的浏览器端的单元测试工具链。...使用 Jest + Enzyme 对 React 进行单元测试 ?

    9.6K20

    如何用 JavaScript 编写你的第一个单元测试

    如何编写单元测试 我们已经回顾了一些单元测试的最佳实践,现在准备好用 JavaScript 编写你的第一个单元测试了。 本教程使用 Mocha 框架 —— 最流行的单元测试之一。...lightIndex:一个变量,跟踪当前交通灯颜色的索引。 light:以字符串形式返回当前交通灯颜色的类属性。 next():将红绿灯更改为下一个灯光颜色的功能。...配置和添加我们的第一个单元测试 现在是时候围绕代码添加一些单元测试了。 在项目中创建一个名为 test 的目录,这是 Mocha 默认检查单元测试的地方。...describe() 这个函数将单元测试进行分组集合,如下: describe( "TrafficLight", function () { }); 然后,我们将创建一些单元测试来验证他们自己的子组中的交通颜色...以上就是文章的全部内容,感谢看到这里,希望对你有所帮助或启发!

    1.2K30

    前端自动化测试解决方案探析

    主要有mocha,jasmine和qunit。我们先来看看使用mocha是怎样实现单元测试的。 mocha   mocha的特点是简单可扩展、支持浏览器和Node、支持同步和异步、支持连续用例测试。...测试集,以函数describe(string, function)封装;测试用例,以it(string, function)函数封装,它包含2个参数;断言,以assert语句表示,返回true或false...测试集以函数describe(string, function)封装;测试用例,以it(string, function)函数封装,它也包含2个参数;断言,以expect语句表示,返回true或false...Nightwatch则可以使用node书写端对端的测试用例,并在Selenium server服务端运行测试,同样支持同步和异步。...四、总结与注意事项   通过对单元测试工具和集成测试工具的概述介绍,我们基本了解了单元测试和集成测试的核心部分和特点,尽管目前主流的测试工具各不相同,但是基本的流程原理确实相同的,小结里面也为大家做了分析

    1.4K10

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

    前端TDD开发环境的搭建 如果想应用Tdd的方法到前端的开发中,主要用到以下几个工具(工具的用法在后面介绍): mocha.js mocha 主要提供了describe的语法,用来描述测试用例,并且把执行测试后的结果清楚的返回到终端上...,sinon也可以返回这个函数执行与否。...,第二个是一个回调函数,其中可以放单元测试代码 it()里写单元测试的代码,第一个参数还是这个测试的名字,第二个回调函数中放入单元测试代码 assert 就是断言代码执行后的结果是什么,比如这个例子中,...(badFn, 'this.commonDirectFn is not a function') // 再把包装后的函数传入throws }) 复制代码 使用sinon模拟函数 如果需要模拟一个函数...mocha,chai,sinon的一些高级的用法,还需要通过实践去学习。 另,本文只是对但纯js的测试,react,vue和小程序都有他们自己的ui测试的方案。

    2.6K20

    前端自动化测试解决方案探析

    主要有mocha,jasmine和qunit。我们先来看看使用mocha是怎样实现单元测试的。 mocha mocha的特点是简单可扩展、支持浏览器和Node、支持同步和异步、支持连续用例测试。...测试集,以函数describe(string, function)封装;测试用例,以it(string, function)函数封装,它包含2个参数;断言,以assert语句表示,返回true或false...测试集以函数describe(string, function)封装;测试用例,以it(string, function)函数封装,它也包含2个参数;断言,以expect语句表示,返回true或false...Nightwatch则可以使用node书写端对端的测试用例,并在Selenium server服务端运行测试,同样支持同步和异步。...四、总结与注意事项 通过对单元测试工具和集成测试工具的概述介绍,我们基本了解了单元测试和集成测试的核心部分和特点,尽管目前主流的测试工具各不相同,但是基本的流程原理确实相同的,小结里面也为大家做了分析。

    1.7K70

    前端自动化测试解决方案探析

    主要有mocha,jasmine和qunit。我们先来看看使用mocha是怎样实现单元测试的。 mocha   mocha的特点是简单可扩展、支持浏览器和Node、支持同步和异步、支持连续用例测试。...测试集,以函数describe(string, function)封装;测试用例,以it(string, function)函数封装,它包含2个参数;断言,以assert语句表示,返回true或false...测试集以函数describe(string, function)封装;测试用例,以it(string, function)函数封装,它也包含2个参数;断言,以expect语句表示,返回true或false...Nightwatch则可以使用node书写端对端的测试用例,并在Selenium server服务端运行测试,同样支持同步和异步。...四、总结与注意事项   通过对单元测试工具和集成测试工具的概述介绍,我们基本了解了单元测试和集成测试的核心部分和特点,尽管目前主流的测试工具各不相同,但是基本的流程原理确实相同的,小结里面也为大家做了分析

    1K21

    如何做前端单元测试

    我认为其中一个很大的原因是很多人对单元测试认知不够,因此我写了这边文章,一方面期望通过这篇文章让你对单元测试有一个初步认识。另一个方面希望通过代码示例,让你掌握写单元测试实践能力。...常见单元测试工具 目前用的最多的前端单元测试框架主要有 Mocha (https://mochajs.cn/)、Jest (https://www.jestjs.cn/),但我推荐你使用 Jest,因为...不支持(需要其他库支持) Jest 默认支持 友好 支持 Mocha 生态好,但是需要较多的配置来实现高扩展性 Jest 开箱即用 比如对 sum 函数写用例 ..../sum.js function sum(a, b) { return a + b; } module.exports = sum; Mocha + Chai 方式 Mocha 需要引入 chai...(3); }) .toThorw 能够让我们测试被测试方法是否按照预期抛出异常 但是需要注意的是:我们必须使用一个函数将被测试的函数做一个包装,正如下面 getIntArrayWrapFn 所做的那样

    3.3K20

    使用Mocha测试node应用

    对于开发者而言,应该对自己产出的代码负责。...单元测试 单元测试主要包含断言,测试框架,测试用例,测试覆盖率,mock,持续集成等几个方面,在用Mocha对node应用进行测试时,我以下面几个方面为例进行介绍: Mocha—Javascript测试框架...Hosted on GitHub. —— MochaJS 可以在其官网介绍中看出,Mocha是具有强大测试功能的测试框架: 断言库支持 钩子函数 异步代码测试和超时控制支持 测试报告 .....: 注意编写测试代码时最重要的两件事就是: Mock数据 解决诸如异步、超时控制等问题 在下面的代码中,我是以测试路由接口的形式,通过测试返回的html字符串与构造的mock数据相比的方法来测试的。...我觉得这还是蛮科学的,但是身边普遍部署测试的时候都是不得不部署的时候才开始的。相信当实践经验足够丰富时,对各种业务逻辑足够熟悉时就能科学地开发吧!

    1.1K20

    使用Mocha测试node应用

    对于开发者而言,应该对自己产出的代码负责。...单元测试 单元测试主要包含断言,测试框架,测试用例,测试覆盖率,mock,持续集成等几个方面,在用Mocha对node应用进行测试时,我以下面几个方面为例进行介绍: Mocha—Javascript测试框架...Hosted on GitHub. —— MochaJS 可以在其官网介绍中看出,Mocha是具有强大测试功能的测试框架: 断言库支持 钩子函数 异步代码测试和超时控制支持 测试报告 ......: 注意编写测试代码时最重要的两件事就是: Mock数据 解决诸如异步、超时控制等问题 在下面的代码中,我是以测试路由接口的形式,通过测试返回的html字符串与构造的mock数据相比的方法来测试的。...我觉得这还是蛮科学的,但是身边普遍部署测试的时候都是不得不部署的时候才开始的。相信当实践经验足够丰富时,对各种业务逻辑足够熟悉时就能科学地开发吧!

    1K100

    单元测试初体验

    所以我在上周进行了一下单元测试的调研,这次调研的方向是主要使用 Mocha 基于 Karma 进行包括 UI 层的单元测试。...单元测试框架 Mocha Mocha 是 JavaScript 的一种单元测试框架,既可以在浏览器环境下运行,也可以在 Node.js 环境下运行。...的部分 API describe('标题', function() { it('断言内容', function() { // 断言部分 }); }); Chai 的部分 API Chai...该标记可以让其后的断言不是比较对象本身,而是递归比较对象的键值对。...sinon.js 中 spy 主要用来监视函数的调用情况,sinon 对待监视的函数进行 wrap 包装,因此可以通过它清楚的知道,该函数被调用过几次,传入什么参数返回什么结果,甚至是抛出的异常情况。

    1.6K20

    【多图警告】学会JavaScript测试你就是同行中最亮的仔(妹)

    使用这种做法的结果是一套全面的单元测试,可随时运行,以提供软件可以正常工作的反馈。TDD重点是培养整个研发过程的节奏感,就像跳踢踏舞一样,“ti-ta-ti”。...当调用add函数并且执行结果为6,执行不会报错,我们将代码改一下。...这是nodejs的assert模块简单尝试,更多详细内容可猛戳Assert模块 PS: 还有很多断言库比如 should.js、chai等等 三、Mocha - 单元测试框架 Mocha是一个在Node.js...Mocha测试以串行方式运行,允许灵活准确的报告,同时将未捕获的异常映射到正确的测试用例。...PS: 单元测试框架还有 jest、jasmine等等 四、Karma-测试工具 一个测试工具,能让你的代码在浏览器环境下测试。

    1.1K60

    快速学习-mocha 简介与入门

    mocha 简介 mocha 是 JavaScript 的一个单元测试框架,既可以在浏览器环境中运行,也可以在 node.js 环境下运行。...测试脚本示例 假设我们编写了一个 sum.js,并且输出一个简单的求和函数: module.exports = function(...rest) { var sum = 0; for (let n...of rest) { sum += n; } return sum; }; 这个函数非常简单,就是对输入的任意参数求和并返回结果。...如果我们想对这个函数进行测试,可以写一个 test.js,然后使用 Node.js 提供的 assert 模块进行断言: const assert = require('assert'); const...通常是取数据,立即返回,与 v0.20.1 版本中的 .call() 相同; contract.methods.setBrand('xxx').send(),对合约发起交易,通常是修改数据,返回的是交易

    1K30

    分享7个专业级的JavaScript测试库,提高你的工作效率

    expect函数和toEqual函数一起构成一个测试断言,它们判断myFunction的返回值是否为Hello, World!。...如果函数的行为与我们的预期不符,那么测试就会失败,并显示一条描述失败原因的消息。 以上就是对Jasmine库的基本介绍和示例。你可以访问其GitHub页面获取更多的信息和详细的文档。...变异测试的工作原理是通过对代码进行小的修改(称为“变异”),然后运行你的单元测试以查看哪些修改没有被测试捕获,这可以帮助揭示代码覆盖率的盲点。...如果你的单元测试没有捕获到某个变异,那么你可能需要增加或改进你的测试。 以上就是对Stryker库的基本介绍和示例。你可以访问其GitHub页面获取更多的信息和详细的文档。...例如,你可以使用td.function()来创建一个模拟函数: const td = require('testdouble'); // 创建一个模拟函数 const mockFunction = td.function

    36020
    领券