如何使用 mocha sinon 存根对请求库进行单元测试?
How to unit test Request library with mocha sinon stub?
如何使用 Mocha、sinon 和 chai 测试 NPM 请求库?
我得到一个 Error: getaddrinfo ENOTFOUND
。 URL 应该无关紧要,因为我预计 yields
的值为 return,无论 url
是什么
describe(`api tests`, () => {
it(`should return`, async () => {
sinon.stub(request, `get`).yields(null, null, JSON.stringify({test: `teststub`}))
return apiFunction.then(res => {
assert.equal(res.body, {test: "stubtest"})
})
})
})
const apiFunction () => {
request(
{
url: `http://url`
},
(err, response, body) => {
console.log(body) // should be {test: "subtest"}
})
}
所以答案是 sinon 无法存根独立函数,它只能存根有父函数的函数,例如Object.function.
可以使用 rewire proxyquire,但是使用 Jest 测试运行器而不是 mocha 感觉是更好的解决方案,因为 jest 提供了更完整的开箱即用功能,包括模拟和断言
如何使用 Mocha、sinon 和 chai 测试 NPM 请求库?
我得到一个 Error: getaddrinfo ENOTFOUND
。 URL 应该无关紧要,因为我预计 yields
的值为 return,无论 url
describe(`api tests`, () => {
it(`should return`, async () => {
sinon.stub(request, `get`).yields(null, null, JSON.stringify({test: `teststub`}))
return apiFunction.then(res => {
assert.equal(res.body, {test: "stubtest"})
})
})
})
const apiFunction () => {
request(
{
url: `http://url`
},
(err, response, body) => {
console.log(body) // should be {test: "subtest"}
})
}
所以答案是 sinon 无法存根独立函数,它只能存根有父函数的函数,例如Object.function.
可以使用 rewire proxyquire,但是使用 Jest 测试运行器而不是 mocha 感觉是更好的解决方案,因为 jest 提供了更完整的开箱即用功能,包括模拟和断言