【问题标题】:How to handle external modules when writing unit tests for server-side Javascript为服务器端 Javascript 编写单元测试时如何处理外部模块
【发布时间】:2019-02-11 06:03:53
【问题描述】:

我正在对一个 JS 文件进行单元测试,该文件具有指向外部模块的 require。如果运行 UT 时一直在本地寻找外部模块,我该如何处理外部模块?

我已经尝试从脚本中模拟一个函数,但我认为这不是测试其组件的正确方法。我真正想要的是让我的测试文件指向脚本文件,并且该脚本文件将跳过对调用外部模块的require 部分的调用,或者找到一种方法来覆盖或忽略该行,以便我可以开始在脚本文件中引用我需要的功能和组件进行单元测试。

Deal.js

var cordra = require('cordra');
var util = require('util');

exports.beforeSchemaValidation = beforeSchemaValidation;

function beforeSchemaValidation(deal, context) {
...
return deal;
}

DealTest.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);
  });
});

我希望我的测试文件通过../rules/Deal 运行,而不会抛出Error: Cannot find module 'cordra' 和/或'util' 错误,以便我可以测试它的其余组件。

【问题讨论】:

    标签: javascript unit-testing mocha.js chai


    【解决方案1】:

    您需要通过以下方式进行:

    var cordra = require('cordra');
    var util = require('util');
    
    function beforeSchemaValidation(deal, context) {
    ...
    return deal;
    }
    
    module.exports = {
    beforeSchemaValidation: beforeSchemaValidation }
    

    【讨论】:

      猜你喜欢
      • 2016-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-26
      • 1970-01-01
      相关资源
      最近更新 更多