Как обрабатывать внешние модули при написании юнит-тестов для серверного Javascript - PullRequest
0 голосов
/ 11 февраля 2019

Я тестирую файл 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', чтобы я мог протестировать остальные его компоненты.

1 Ответ

0 голосов
/ 11 февраля 2019

Вам нужно сделать это следующим образом:

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

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

module.exports = {
beforeSchemaValidation: beforeSchemaValidation }
...