NodeJS karma proxyquire给出错误:ENOENT:没有这样的文件或目录,scandir C:\\ <项目路径> \\ [对象对象] [对象对象]

问题描述

我正在尝试对我编写的基于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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...