如何从node js文件中调用一个vanilla JavaScript函数?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从node js文件中调用一个vanilla JavaScript函数?相关的知识,希望对你有一定的参考价值。
我正在为一个vanilla javascript文件mainWindow.js编写一些摩卡单元测试。这个JS文件创建UI组件,并进行客户端调用后端node.js服务器获取数据。在mainWindow.spec.js中,我想写的第一个测试是测试mainWindow.js中的GET函数。如何对这个函数进行直接调用呢?请看下面的片段。
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.spec.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.spec.js中调用它时,我得到了错误的ReferenceError: downloadRoles is not defined。
如果有任何帮助,我将非常感激
答案
这是不正确的。
module.exports = downloadRoles();
这是在导出运行 "downloadRoles() "的结果,显然不是你想要的。
导出这个。
module.exports.downloadRoles = mainWindow.downloadRoles; // no '()'
然后在你的测试页面中
const { downloadRoles } = require('../js/mainWindow');
...
downloadRoles();
以上是关于如何从node js文件中调用一个vanilla JavaScript函数?的主要内容,如果未能解决你的问题,请参考以下文章
仅使用 vanilla node.js 将 multipart/form-data 与文件组合
在 Vanilla JS 和 Django 中保护 API 密钥的最佳方法
如何在 .NET Core MVC 中初始化或调用 Vanilla 数据表