如何测试作为nodejs中所需模块创建的对象一部分的函数?

时间:2018-02-06 15:11:11

标签: javascript unit-testing mocha sinon proxyquire

我有这个模块和相应的proxyquire测试。



// sqlQuery.js
const sql = require('mssql');
module.exports = function sqlFn() {
  const request = new sql.Request();
}

// sqlQueryTest.js
const proxyquire = require('proxyquire');
const sql = require('mssql');
let sqlStub = sinon.stub(sql);

describe('Sql wrapper', function() {

  let sqlQuery = proxyquire('../public/sqlQuery', {
    'sql': sqlStub
  })
  sqlQuery()

  it('Should call sql once', function() {
    expect(sqlStub.Request.callCount).to.deep.equal(1) // passes
  })

})




如果在sqlQuery我想使用request对象的功能,则测试不会运行:

TypeError: request.query is not a function

我也尝试rewirerequire设置为存根:



let stub1 = sinon.stub()
let sqlQuery = rewire('../public/sqlQuery')
sqlQuery.__set__('request', {
  input: stub1
})




如何使用代码中的给定方法测试request是否被调用?

0 个答案:

没有答案