Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js:如何使用proxyquire替换neo4j驱动程序依赖项_Javascript_Node.js_Testing_Sinon - Fatal编程技术网

Javascript Node.js:如何使用proxyquire替换neo4j驱动程序依赖项

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

我必须对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_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不管怎样,谢谢你的帮助。如果您将其作为一个独立的答案,我将很乐意批准:)