Spy/stub 路由内的请求(通过 chai.request)
Spy/stub a request inside a route (through chai.request)
问题
我有一个名为 /players
的端点,它向外部服务器发出 http 请求,我不希望在我的测试中执行该请求,但我不知道如何模拟在这种情况下。
密码
test/controllers/test-players.js
// ...
it('returns all players', done => {
chai.request(app) // the content of app is not relevant
.get('/players')
.end((err, res) => {
expect(err).to.not.exist
expect(res.body.length).to.equal(3)
done()
})
})
// ...
controllers/players.js
const request = require('request')
module.exports = (req, res) => {
request('http://externalendpoint.com', (error, request, body) => {
res.json(body)
})
}
详情
我正在使用:
- 节点 (v6)
- 快递 (v4)
- 摩卡 (v3)
- 柴 (v3)
- 诗乃 (v1.17)
想法?
我找到了解决办法。我刚刚使用 nock:
拦截了请求
const fixture = [{id: 1, name: 'User'}, {id: 2, name: 'Admin'}, {id: 3, name: 'Subadmin'}]
nock('https://domain.com')
.get('/some-endpoint')
.reply(200, {fixture})
it('returns all players', done => {
chai.request(app) // the content of app is not relevant
.get('/players')
.end((err, res) => {
expect(err).to.not.exist
expect(res.body.length).to.equal(3)
done()
})
})
问题
我有一个名为 /players
的端点,它向外部服务器发出 http 请求,我不希望在我的测试中执行该请求,但我不知道如何模拟在这种情况下。
密码
test/controllers/test-players.js
// ...
it('returns all players', done => {
chai.request(app) // the content of app is not relevant
.get('/players')
.end((err, res) => {
expect(err).to.not.exist
expect(res.body.length).to.equal(3)
done()
})
})
// ...
controllers/players.js
const request = require('request')
module.exports = (req, res) => {
request('http://externalendpoint.com', (error, request, body) => {
res.json(body)
})
}
详情
我正在使用:
- 节点 (v6)
- 快递 (v4)
- 摩卡 (v3)
- 柴 (v3)
- 诗乃 (v1.17)
想法?
我找到了解决办法。我刚刚使用 nock:
拦截了请求const fixture = [{id: 1, name: 'User'}, {id: 2, name: 'Admin'}, {id: 3, name: 'Subadmin'}]
nock('https://domain.com')
.get('/some-endpoint')
.reply(200, {fixture})
it('returns all players', done => {
chai.request(app) // the content of app is not relevant
.get('/players')
.end((err, res) => {
expect(err).to.not.exist
expect(res.body.length).to.equal(3)
done()
})
})