Articles of proxyquire

Proxyquire:不能存根Cassandra驱动程序

我试图嘲笑Cassandraunit testing用例,我使用npm Cassandra-driver来连接/查询cassandra。 嘲笑存根这是我的代码。 beforeEach(function () { let CassandraClient = sinon.stub(); CassandraClient.prototype.execute = sinon.stub().returns(new Promise((fulfill, reject) => { console.log("Inside execute method"); fulfill(cassndaraExperimentQueryData); })); const CassandraClientWrapper = proxyquire('../../../../api/services/index.js', { 'cassandra-driver': { Client: CassandraClient } }); console.log(typeof CassandraClientWrapper); CassandraClientWrapper.init(); }); 这是我的index.js的外观 const cassandra = require('cassandra-driver'); module.exports = class DBServices { init(){ const contactPoint = process.env['cassndraIP'] || '127.0.0.1'; […]

看哪里定义function

我怎样才能看到这个function: http : //docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#copyObject-property copyObject(params = {}, callback) ⇒ AWS.Request 被定义为? 我试过的: var AWS = require('aws-sdk'); AWS.S3.prototype.copyObject => undefined 但是这是不明确的 我想知道它是因为我想用proxyquire这个函数: var aws_stub = {}; var Mover = proxyquire('../../callback/mover', {'aws-sdk': aws_stub} ).Mover; var fake_aws_copyObject = function(params, func){func(null, "succeed")}; fake_aws_copyObject_stub = sinon.spy(fake_aws_copyObject); aws_stub.AWS.S3 … ?? = fake_aws_copyObject_stub;

node.jsunit testing模拟依赖

我有一个关于使用proxyquire(或任何其他build议如何testing下面的代码) 如果我有以下文件来testing: var path = require('path'); module.exports = function (conf) { var exported = {}; exported.getIssue = function (issueId, done) { … … }; return exported; }; 如何在使用proxyquire模拟path时传递'conf'variables; VAR? 有没有其他的方式来做到这一点,如果不使用proxyquire?

节点Stub一个返回对象的方法

我有一个模块,有一些属性。 我正在使用它如下 Var propmodule = require('me-props'); var prop = new propmodule('server'); prop.get('min); //returns 3 prop.get('max') //returns 10 我必须嘲笑这个testing。 下面的代码使用了proxyquire和sinon var spro = proxyquire('../lib/add.js',{ 'me-props' : sinon.stub.returns({ get : sinon.stub.returns({ min :'3', max : '10 )} )} }) 上面的代码工作。 但在testing时,get方法调用返回一个对象。 get(min)返回一个对象。 var a = prop.get()然后a('min')返回3.但prop.get('min')返回一个对象。 如何修改存根以返回获取调用的值?

编写async.parallel的testing。

我是javascript的新手。我正在尝试使用proxyquire编写基本的unit testing。 下面的代码。 文件 – 答: const modA=require('./modA'); const modB=require('./modB'); const async=require('async'); module.exports=function(a,b,callback){ async.parallel([ function(callback){ // db call modA(a,b,callback); }, function(callback){ // db call mobB(a,b,callback); } ], //not able to test code (err,res){ //do something }); }; 文件A的unit testing如下所示: const proxyquire=require('proxyquire'); function modaAStub(a, b, callback) { return (null, modAresponse); } function modaBStub(a, b, callback) { […]

Nodejs嘲笑一个方法

我想做一个getDbmodel方法的存根。 它是在basemodel.js中定义的 import Sequelize from 'sequelize'; import db from '../../config/database'; let instance = null; class Database { static getDbmodel = () => { if (instance != null) { return instance; } instance = new Sequelize(db.default.database, db.default.username, db.default.password, { host: db.default.host, dialect: db.default.dialect, define: { timestamps: false, // true by default }, pool: { max: db.default.maxConnections, […]

Proxyquire:不能存根fs.readFileSync

我似乎无法在fj上从NodeJS核心上存储readFileSync。 下面的代码隔离了这个问题。 通过摩卡运行testing结果如下: > mocha tests/test.js Some description 1) "before all" hook 0 passing (15ms) 1 failing 1) Some description "before all" hook: TypeError: Cannot read property 'charCodeAt' of undefined at Object.stripBOM (internal/module.js:48:14) at Object.require.extensions.(anonymous function) (node_modules/proxyquire/lib/proxyquire.js:276:43) at Proxyquire._withoutCache (node_modules/proxyquire/lib/proxyquire.js:179:12) at Proxyquire.load (node_modules/proxyquire/lib/proxyquire.js:136:15) at Context.<anonymous> (tests/test.js:12:15) 这里是tests / test.js var proxyquire = require('proxyquire'), sinon = […]

如何在unit testing中用sinon / proxyquire或node.js中的依赖关系模拟twilio

说我想testing一个用户login控制器,通过短信与Twilio发送login代码。 我应该如何设置testing,以便我可以嘲笑Twilio,看看它发回的代码。 我的方法就是恳求客户对象,并用sinon窥探它,但我认为我没有把它做得很正确。 控制器user.js var smsClient = new twilio.RestClient(config.get('twilio_account_sid'), config.get('twilio_auth_token')); module.exports = { checkCode: function(phone){ var code = getNewCode(); smsClient.sms.messages.create({ from: config.get('twilio_phone_number'), to: phone, body: 'Your code :' + code }, callback); } } testing文件 var twilioMock = //what goes here?? var smsSpy = sinon.spy(twilioMock.sms.messages, 'create'); var User = proxyquire('../models/user', { 'mongoose': mongooseMock, 'smsClient': twilioMock […]

无法分配给只读属性“.js”的#<对象>

我正在构build一个应用程序,并有一些麻烦与处理代理和testing。 我有以下testing: import proxyquire from 'proxyquire' const fetchMock = () => new Promise((res) => { jobs: [] }) const JenkinsService = proxyquire('../lib/jenkins-service', { 'node-fetch': fetchMock }) describe('JenkinsService#getProject->goodConfs', () => { let service beforeEach(() => service = new JenkinsService({ url: 'http://jenkins.io' })) it('should call fetch method', () => { service.getAll() }) }) 这失败了,并抛出我以下错误: 不能只读属性的'.js' 我试图简单地testing在我的getAll方法中调用获取模块: 'use […]

使用proxyquire进行模拟的策略需要跨越多个testing文件(NodeJS)

我在几个API文件中使用Rediscaching,这意味着我有一个依赖,我需要在testing中模拟。 假设我有以下文件结构 -api – login.js * – login.spec.js – initiate.js – initiate.spec.js – user.js * – user.spec.js – routes.js – server.js 假设那些带有*的文件具有redis-connection作为依赖,我可以使用Proxyquire在相应的spec.js进行模拟。 简单。 当我运行所有testing时,问题就出现了,Mocha启动服务器。 所有这些文件将被引入我的routes.js ,并且因为Redis没有运行而失败。 我可以看到几个方法: 全球模拟proxyquire – 文档不喜欢这个。 我目前的解决方法,在每个需要redis-connection文件中,有条件地导入真实的东西或基本的模拟,如果process.env.NODE_ENV === 'test' 。 然后,如果您需要特定的行为,请将这个模拟器在相关的spec文件中更有用的模拟。 卷土重来,但似乎工作。 在每个spec文件中为每个redis-connection发生一个模拟。 听起来很糟糕的pipe理。 当Mocha最初运行服务器时也可能不起作用 有没有其他方法呢? 我觉得我的解决方法可能暂时工作,因为我不经常使用这种依赖关系,但我更喜欢一个更具可扩展性的解决scheme。 谢谢