问题描述
我正在尝试对我编写的基于Express的文件上传应用程序进行单元测试。每当我启动因果报应时,都会出现此错误
C:\<path to project>> npm test
> myproject@1.4.0 test C:\<path to project>\
> karma start karma.conf.js
INFO [framework.browserify]: registering rebuild (autoWatch=true)
ERROR [karma-server]: UncaughtException:: ENOENT: no such file or directory,scandir 'C:\<path to project>\[object Object][object Object]'
ERROR [karma-server]: [Error: ENOENT: no such file or directory,scandir 'C:\<path to project>\[object Object][object Object]'] {
errno: -4058,code: 'ENOENT',syscall: 'scandir',path: 'C:\\<path to project>\\[object Object][object Object]'
}
npm ERR! Test Failed. See above for more details.
server.js
const express = require('express');
const os = require('os');
const path = require('path');
const fileHelper = require('./filehelper');
const { query } = require('express-validator');
app.get('/searchAllFiles',[
query('filename').isLength({ min: 3 }).trim().escape()
],function (req,res,next) {
fileHelper.getAllFilesInFolder("DataFiles",function (err,files) {
if (err) {
console.log(err);
res.status(500).send(err);
}
filesToSearch = req.query.filename ? req.query.filename.split(',') : [];
searchResult = {};
filesToSearch.forEach((file,i) =>{
//Partial File Name Search
// searchResult[file] = files.findindex(element => element.includes(file)) != -1
//Exact File Name Search
searchResult[file] = files.indexOf(file) != -1
});
res.status(200).send(searchResult);
});
});
let port = process.env.PORT || 8090;
let host = process.env.HOST || '0.0.0.0';
app.listen(port,host);
console.log(`App listening on ${host}:${port}`);
filehelper.js
const fs = require('fs');
exports.mount_path = process.env.MOUNT_PATH;
exports.getAllFilesInFolder = function(folderName,callback){
console.log("Inside actual method" + folderName);
fs.readdir(`${exports.mount_path}${folderName}`,callback);
}
spec / FileUploadApiSpec.js
'use strict';
const proxyquire = require('proxyquire');
const request = require('supertest');
describe("FileUpload",function(){
beforeAll(function() {
this.server = proxyquire('../server',{
'./filehelper': {
getAllFilesInFolder: (folderName,callback) => {
console.log("Inside mock" + folderName);
}
// '@noCallThru': true
}
});
});
it('search all files',function(){
console.log("Search All Files");
// request(app)
// .get('/searchAllFiles')
// .expect('Content-Type',/json/)
// .expect(200)
// .end(function(err,res) {
// if (err) throw err;
// console.log(res);
// });
});
});
karma.conf.js
module.exports = function (config) {
config.set({
basePath: '',frameworks: ['jasmine','browserify'],plugins: [
require('karma-jasmine'),require('karma-coverage'),require('karma-chrome-launcher'),require('karma-jasmine-html-reporter'),require('karma-coverage-istanbul-reporter'),require('karma-browserify')
],files: [
"spec/*.js"
],client: {
// jasmine: {
// config: ['./spec/support/jasmine.json']
// }
},reporters: ['progress','coverage'],preprocessors: { 'spec/*.js': ['coverage','browserify'] },browserify: {
debug: true,transform: [ 'brfs' ],plugin: ['proxyquire-universal']
},port: 9878,colors: true,logLevel: config.LOG_INFO,autoWatch: true,browsers: ['ChromeHeadless'],customLaunchers: {
ChromeHeadless: {
base: 'Chrome',flags: [
'--headless','--disable-gpu','--no-sandBox','--disable-setuid-sandBox','--remote-debugging-port=9222'
]
}
},singleRun: false,concurrency: Infinity,restartOnFileChange: true,coverageReporter: {
type : 'text',dir : 'coverage/',file : 'coverage.txt'
},coverageIstanbulReporter: {
reports: ['html','lcovonly','text-summary'],fixWebpackSourcePaths: true,verbose: true
}
});
};
通过反复试验,我将问题范围缩小到this.server = proxyquire('../server',{
行。我已经尝试了很多方法,但无法解决此问题。
感谢您的帮助。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)