我正在尝试记录在执行Stripe的节点库的背景下发生的一些Stripe HTTP调用。
我扎根于nock's back feature,但是尝试以'record'
模式执行时却没有最佳结果。
发生了什么事
这是与nock的用法有关的代码段:
nockBack.fixtures = path.join(__dirname, 'fixtures')
nockBack.setMode('record')
describe.only('Subscriptions creation', function () {
this.timeout(20000)
before(function (done) {
let {user, jwt} = getRandomUserAndJwt()
testToken = jwt
return setupTestDatabaseWithUser(user, async function (err, createdUser) {
if (err) return done(err)
testUser = createdUser
const { nockDone } = await nockBack('subscription.json')
chai.request(server)
.post(API_BASE)
.set('Authorization', `Bearer ${testToken}`)
.send(testRequestPayload)
.end(function (err, response) {
const {status, body: subscription} = response
status.should.equal(201)
should.exist(subscription)
const nyaFields = ['id', 'status', 'planId', 'stripe_status', 'dateSubscriptionWillRenew']
nyaFields.forEach(f => subscription.should.haveOwnProperty)
testSubscription = subscription
nockDone()
nockBack.setMode('wild')
done(err)
})
})
})
所以
const { nockDone } = await nockBack('subscription.json')
导致要创建的文件。我重复一遍,它是一个有3个请求发生的数组。
如果我再次执行,
.end(function (err, response) {
err
将被定义并告知:
{ NetConnectNotAllowedError: Nock: Not allow net connect for "127.0.0.1:63304/api/subscriptions" (...)
name: 'NetConnectNotAllowedError',
code: 'ENETUNREACH',
message: 'Nock: Not allow net connect for "127.0.0.1:63304/api/subscriptions"',
response: undefined }
所以我尝试添加
nock.disableNetConnect()
nock.enableNetConnect(/127\.0\.0\.1/)
在录制之前,还要确保在挂钩结束时,nock设置应如下所示:
nockDone()
nockBack.setMode('wild')
nock.cleanAll()
nock.enableNetConnect()
但仍然存在相同的问题