gpt4 book ai didi

node.js - 如何访问和测试 node.js 模块中的内部(非导出)函数?

转载 作者:IT老高 更新时间:2023-10-28 21:46:23 27 4
gpt4 key购买 nike

我正在尝试弄清楚如何在 nodejs 中测试内部(即未导出)函数(最好使用 mocha 或 jasmine)。我也不知道!

假设我有一个这样的模块:

function exported(i) {
return notExported(i) + 1;
}

function notExported(i) {
return i*2;
}

exports.exported = exported;

还有以下测试( Mocha ):

var assert = require('assert'),
test = require('../modules/core/test');

describe('test', function(){

describe('#exported(i)', function(){
it('should return (i*2)+1 for any given i', function(){
assert.equal(3, test.exported(1));
assert.equal(5, test.exported(2));
});
});
});

有没有什么方法可以对 notExported 函数进行单元测试,而无需实际导出它,因为它并不打算公开?

最佳答案

rewire模块绝对是答案。

这是我的代码,用于访问未导出的函数并使用 Mocha 对其进行测试。

application.js:

function logMongoError(){
console.error('MongoDB Connection Error. Please make sure that MongoDB is running.');
}

test.js:

var rewire = require('rewire');
var chai = require('chai');
var should = chai.should();


var app = rewire('../application/application.js');


var logError = app.__get__('logMongoError');

describe('Application module', function() {

it('should output the correct error', function(done) {
logError().should.equal('MongoDB Connection Error. Please make sure that MongoDB is running.');
done();
});
});

关于node.js - 如何访问和测试 node.js 模块中的内部(非导出)函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14874208/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com