我正在单元测试具有指向外部模块的require
的JS文件。如果运行UT继续在本地寻找该外部模块,该如何处理该外部模块?
我已经尝试从脚本中模拟一个函数,但是我认为这不是测试其组件的正确方法。我真正想要的是让我的测试文件指向脚本文件,并且该脚本文件将跳过对调用外部模块的var cordra = require('cordra');
var util = require('util');
exports.beforeSchemaValidation = beforeSchemaValidation;
function beforeSchemaValidation(deal, context) {
...
return deal;
}
部分的调用,或者找到一种方法来覆盖或忽略该行,以便我可以开始引用脚本文件中进行单元测试所需的功能和组件。
Deal.js
var assert = require('chai').assert;
const beforeSchemaValidation = require('../rules/Deal').beforeSchemaValidation;
describe('Deal', function() {
it('beforeSchemaValidation should return object', function() {
let result = beforeSchemaValidation();
assert.typeOf(result, Object);
});
});
DealTest.js
../rules/Deal
我希望我的测试文件能够通过Error: Cannot find module 'cordra'
运行,而不会引发'util'
和/或{{1}}的错误,因此我可以测试其其余组件。
答案 0 :(得分:0)
您需要按以下方式进行操作:
var cordra = require('cordra');
var util = require('util');
function beforeSchemaValidation(deal, context) {
...
return deal;
}
module.exports = {
beforeSchemaValidation: beforeSchemaValidation }