Как вызвать функцию vanilla JavaScript из файла node js - PullRequest
0 голосов
/ 20 апреля 2020

Я работаю над написанием некоторых модульных тестов mocha для файла vanilla JavaScript, mainWindow. js. Этот файл JS создает компоненты пользовательского интерфейса и выполняет клиентские вызовы на внутренний сервер node.js для получения данных. Первый тест в mainWindow.spe c. js Я пытаюсь написать, чтобы проверить функцию GET в mainWindow. js. Как мне сделать прямой вызов этой функции? См. Фрагменты ниже.

mainWindow. js

var mainWindow = {
    downloadRoles: function (voiceInput) {
        var word = voiceInput.procedureNumber;
        var number = mainWindow.wordToNumber(word);
        mainWindow.currentProcedure = mainWindow.mission[number - 1];

        $.get({
                url: mainWindow.urlprefix + "/hud/api/roles/" + mainWindow.currentProcedure,
                dataType: "JSON"
            })
            .fail(function (error) {
                console.log(error);
                alert("Failed to download mission data");
            })
            .done(function (data) {
                mainWindow.roles = data;
                mainWindow.selectRole();
            });
    },

module.exports = downloadRoles();

mainWindow.spe c. js

const assert = require('chai').assert;
var jsdom = require('jsdom');
var $ = require('jquery')(new jsdom.JSDOM().window);
var app = require('../js/mainWindow');
var mock = require('mock-require');
var sinon = require('sinon');
var passThrough = require('stream').PassThrough;
var http = require('http');

mock('jquery', $);
mock.reRequire('jquery');


describe('frontend client testing', function() {
    beforeEach(function() {
        this.request = sinon.stub(http, 'request');
    });
    afterEach(function() {
        http.request.restore();
    })
    it('should initialize a window object', function() {
        assert.typeOf(app, 'object');
    })
    it('should GET a JSON response', function(done) {
        var expected = {};
        var response = new PassThrough();
        response.write(JSON.stringify(expected));
        response.end();

        var request = new PassThrough();

        this.request.calls().returns(request);

        app.downloadRoles();
    })
})

Обновление 1

Я экспортирую downloadRoles (), однако при вызове его в mainWindow.spe c. js я получаю ошибку ReferenceError: downloadRoles не определено.

Любая помощь будет очень оценили!

1 Ответ

0 голосов
/ 20 апреля 2020

Это неверно:

module.exports = downloadRoles();

Это экспортирует результаты запуска `downloadRoles () ', явно не то, что вы хотите.

Экспортируйте это:

module.exports.downloadRoles = mainWindow.downloadRoles; // no '()'

Тогда на вашей тестовой странице:

const { downloadRoles } = require('../js/mainWindow');
...
downloadRoles();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...