如何使用SinonJS判断模块中指定函数是否存在?
检查模块函数是否存在的正确方式
嘿,其实你完全不需要用Sinon来做这个检查哦!Sinon主要是用来创建间谍、存根、模拟对象这类工具,帮你测试函数的调用行为,而验证模块里是否存在某个函数,用测试框架自带的断言库就足够简单直接了。下面给你几种常见的实现方式:
用Node.js原生assert模块
这是最基础的方式,不需要额外安装依赖:
var assert = require('assert'); var myModule = require('my-module'); describe('myModule', function () { it('has a function .doSomething', function () { // 严格判断类型是否为function assert.strictEqual(typeof myModule.doSomething, 'function'); }); });
用Chai断言库(Expect风格)
如果你习惯用更语义化的断言写法,可以用Chai的expect风格,先安装chai依赖后:
var expect = require('chai').expect; var myModule = require('my-module'); describe('myModule', function () { it('has a function .doSomething', function () { expect(myModule.doSomething).to.be.a('function'); }); });
补充说明
Sinon在这里其实派不上用场,它的核心能力是帮你测试函数的调用次数、传入参数、返回值这类行为——比如你想验证doSomething是否被调用过,这时候才需要用到Sinon的间谍函数。而检查函数是否存在属于基础的类型验证,用普通断言就够啦。
内容的提问来源于stack exchange,提问作者neaumusic
相关产品推荐
相关产品推荐

