如何测试使用Mocha调用Node模块中的函数

时间:2017-01-30 03:40:50

标签: node.js mocha

我刚刚开始在摩卡,我正在努力想出这个。

假设我有这个节点应用程序(app.js):

var myModule = require('./myModule');
function startingPoint() {
   myModule.myFunction();
}

我有一个模块(myModule.js):

exports.myFunction = function() {
   console.log('hello, world');
}

现在,我想做的是测试app.js并验证当我调用函数startingPoint时,调用myModule.myFunction。我怎么会在摩卡那里去做?

谢谢!

1 个答案:

答案 0 :(得分:-1)

让我们考虑一下mocha,chai和chai-spy的方法。我已导出startingPoint以便在测试中访问它。

"use strict"

const chai = require('chai')
const expect = chai.expect
const spies = require('chai-spies')
chai.use(spies);
const startingPoint = require('../app')
const myModule = require('../myModule')

describe('App', () => {

    context('.startingPoint()', () => {

        it('doesn\'t call .myFunction()', () => {
            let spy = chai.spy.on(myModule, 'myFunction')
            expect(spy).not.to.have.been.called()
        });

        it('calls .myFunction()', () => {
            let spy = chai.spy.on(myModule, 'myFunction')
            startingPoint()
            expect(spy).to.have.been.called()
        });

    });

});

output from mocha test