내 보낸 메서드를 아래 코드에서 단위 테스트하고 싶습니다. 반환 된 약속의 거부/해결을 제어하기 위해 개인 메서드에서 값을 조롱하고 싶습니다. 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)
}
.on()은 어떻게 테스트합니까? 어떻게 수행 할 수 있는지 보여주는 코드 샘플을보고 싶습니다. – Brian
요청을 모의 할 때는 쓰기 가능한 스트림으로 구현하고 테스트하는 동안 데이터를 쓸 수 있습니다. http://stackoverflow.com/questions/33141012/how-to-mock-streams-in-nodejs를 참조하십시오. –