proxyquire 错误:ENOENT:没有这样的文件或目录,scandir
Posted
技术标签:
【中文标题】proxyquire 错误:ENOENT:没有这样的文件或目录,scandir【英文标题】:proxyquire Error: ENOENT: no such file or directory, scandir 【发布时间】:2021-12-05 04:50:35 【问题描述】:您好,我是 mocha/chai/sinon and sequelize-test-helpers
测试的新手
尝试使用proxyquire
覆盖require
但遇到问题
收到以下有关路径的错误:
Error: ENOENT: no such file or directory, scandir 'C:<local-directories-path>\ecommerce-pern-app\server\src\models'
当我根本没有src folder
时,我不明白为什么会有src folder
我在测试文件中使用proxyquire
,它的路径来自server
目录将是:
服务器/specs/services/user-service.spec.js
"use strict";
const chai = require('chai');
const match, stub, resetHistory, spy = require('sinon');
const proxyquire = require('proxyquire');
const path = require('path');
const service = path.resolve('./services/userService.js')
var sinonChai = require("sinon-chai");
chai.should();
chai.use(sinonChai);
console.log(service)
const makeMockModels, sequelize, dataTypes, = require('sequelize-test-helpers');
describe('Idea Controller', function ()
const uid = '6a88e9b5-33a2-403f-ac3d-e86413ac101d'
const data =
email: 'testface@test.com',
password: '123456',
is_admin: false,
first_name: 'Testy',
last_name: 'McTestface',
google_id: null,
facebook_id: null
describe('findAll()', function ()
it('Success case ', function ()
const mockResponse = () =>
const res = ;
res.json = stub().returns(res);
return res;
;
let res = mockResponse();
const User = findAll: stub();
const mockModels = makeMockModels(User);
Idea.findAll.resolves(data);
const UserService = proxyquire(service,
"save":
);
UserService.findAll(, res);
Idea.findAll.should.have.been.called; // passes
res.json.should.have.been.called; //fails
);
)
);
在上面的代码中,我使用的是这样的代理查询:
const proxyquire = require('proxyquire');
const path = require('path');
const service = path.resolve('./services/userService.js')
const makeMockModel = require('sequelize-test-helpers');
const mockModels = makeMockModels(User);
const UserService = proxyquire(service,
"../models": mockModels
);
当我试图使用路径来查找server/service/userService.js
文件时,该文件相对位于../../services/userService.js
的测试文件中。当我根本没有src directory
时,我遇到了这个错误,那里有src folder
!
正如虫子所说:
Error: ENOENT: no such file or directory, scandir 'C:<local-directories-path>\ecommerce-pern-app\server\src\models'
无论我尝试什么文件路径都不起作用,我尝试了 path.resolve、path.join 并直接将路径输入到其中,就像 ../../services/userService.js
这里是 服务器/服务/userService.js
const Models = require('../models');
const User = Models;
const save = async ( id, ...data ) =>
const user = await User.findOne( where: uid: id )
if (user) return await user.update(data)
return null
module.exports = save;
我只希望使用 proxyquire 的路径
错误中的\src\models 路径是什么,我根本没有src/models 路径路径!
【问题讨论】:
【参考方案1】:这是sequelize-test-helpers's readme的引述。
为方便起见,makeMockModels 会自动使用您在src/models folder 中定义的所有模型的模拟填充您的模拟模型(或者,如果您有一个 .sequelizerc 文件,它会在其中查找模型路径)。只需覆盖您需要处理的任何特定模型。
所以你需要提供.sequelizerc文件并定义models-path
。
【讨论】:
以上是关于proxyquire 错误:ENOENT:没有这样的文件或目录,scandir的主要内容,如果未能解决你的问题,请参考以下文章
错误:ENOENT:没有这样的文件或目录,在进行 Yarn 安装时使用 lstat
反应本机调试器:“错误:ENOENT:没有这样的文件或目录”
Android:NDK:超级打开失败:ENOENT(没有这样的文件或目录)错误