Javascript Node.js:如何使用proxyquire替换neo4j驱动程序依赖项
我必须对proxyquire如何工作或做错事有一些基本的理解问题 为了进行概念验证,我在node.js中提供了连接到neo4j graphnedb的原始代码:Javascript Node.js:如何使用proxyquire替换neo4j驱动程序依赖项,javascript,node.js,testing,sinon,Javascript,Node.js,Testing,Sinon,我必须对proxyquire如何工作或做错事有一些基本的理解问题 为了进行概念验证,我在node.js中提供了连接到neo4j graphnedb的原始代码: // I am lib/neo4j.js var neo4j = require('neo4j-driver').v1; var graphenedbURL = process.env.GRAPHENEDB_BOLT_URL; var graphenedbUser = process.env.GRAPHENEDB_BOLT_US
// I am lib/neo4j.js
var neo4j = require('neo4j-driver').v1;
var graphenedbURL = process.env.GRAPHENEDB_BOLT_URL;
var graphenedbUser = process.env.GRAPHENEDB_BOLT_USER;
var graphenedbPass = process.env.GRAPHENEDB_BOLT_PASSWORD;
var driver = neo4j.driver(graphenedbURL, neo4j.auth.basic(graphenedbUser, graphenedbPass));
然后我有一个测试:
// I am test/neo4j.test.js
'use strict';
const test = require('tap').test;
const proxy = require('proxyquire');
const sinon = require('sinon');
test('Testing connection to Neo4j', (assert) => {
const driverStub = sinon.stub();
const testedModule = proxy('../lib/neo4j', {
'neo4j': {
'driver': driverStub,
},
});
});
测试以npm tap Test/*.Test.js--conv的形式运行
因为npm没有为heroku graphnedb提供对.env的访问,所以驱动程序将没有任何process.env连接变量,这应该是正常的,因为我的预期是proxyquire将用上述定义的存根替换驱动程序,但这并没有发生,并且在neo4j上测试失败。驱动程序缺少graphnedebURL。请问我做错了什么?您需要以与原始文件(包括v1)中要求的相同方式请求neo4j
// I am test/neo4j.test.js
'use strict';
const test = require('tap').test;
const proxy = require('proxyquire');
const sinon = require('sinon');
test('Testing connection to Neo4j', (assert) => {
const driverStub = sinon.stub();
const testedModule = proxy('../lib/neo4j',
{
'neo4j-driver': {
'v1': {
driver: driverStub
},
},
});
});
const testedModule=proxy('../lib/neo4j',{'neo4j-driver':{'v1':{driver:driverStub},},},});试试这个。是的,就是它。。。我花了大约6个小时在这上面。。。我知道有人会让我觉得自己很迟钝:D不管怎样,谢谢你的帮助。如果您将其作为一个独立的答案,我将很乐意批准:)