【发布时间】:2017-07-24 03:20:31
【问题描述】:
我想在下面的代码中对导出的方法进行单元测试。我想模拟私有方法中的值来控制返回的 Promise 的拒绝/解析。 client 是 node-postgres 已经连接到数据库的对象。
我知道我可以使用 proxyquire 来存根出所需的库,但我如何模拟链接方法 .on('error', ...)、.pipe(stream) 和 .on('end', ...) 以便我可以控制返回的值。
注意显示的导出方法是对真实方法的简化,导出 importDomain 是不可行的。
const copyFrom = require('pg-copy-streams').from
const request = require('request')
const Promise = require('bluebird')
// private
function importDomain (client, domain) {
return new Promise((resolve, reject) => {
let stream = client.query(copyFrom(`COPY ${domain.table} FROM STDIN;`))
let req = request(`${domain.url}`)
req.on('error', reject)
req.pipe(stream)
.on('error', reject)
.on('end', resolve)
})
}
// public
module.exports = (client) => {
let domain = someFunctionReturningDomain()
importDomain(client, domain)
}
【问题讨论】:
标签: node.js proxyquire nodejs-stream pg-copy