Я пытаюсь записать некоторые HTTP-вызовы Stripe, происходящие на фоне выполнения библиотеки узлов Stripe.
Я болел за функцию возврата Нока , однако у меня не получаются лучшие результаты при попытке выполнить его в режиме 'record'
.
Что происходит:
- Файл фикстуры создается, если он запускается первым в режиме записи. Это включает 3 запроса:
- Соответствует вызову Stripe API, который библиотека инициирует для создания клиента.
- Второй - вызов Stripe API для подписки.
- Третий удар по нашей конечной точке API, который фактически приводит к выполнению предыдущих вызовов.
- При втором и последующем выполнении тестов ответ на мою конечную точку заканчивается нулевым ответом.
Это фрагмент кода, относящийся к использованию 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()
Но все еще возникают те же проблемы