При тестировании одной из моих конечных точек я нажал 3 внешних apis. Один из этих внешних запросов nock003
не перехватывается, когда я запускаю конвейер на BitBucket. Однако я вообще не мог реплицировать поведение локально.
При добавлении журналов консоли я понял, что каждый Nock добавляет: 443 к хосту, но я не уверен, что это вызывает его неправильный перехват.
Я пробовал следующие вещи: 1) Изменив nock003
на filterPath и вернув '/' (как я это сделал для nock002) 2) Сделав вызов API явно запросом post
(оригинал использует rp ( options) вместо rp.post (options)) 3) Очистка всех узлов до и после их использования
Еще одно замечание, хотя в Bitbucket он показывает, что не перехватывает, наша учетная запись администратора никогда не получает билет Zendesk либо ...
it("Should return 207 & send Zendesk ticket if X could not create", function (done) {
if (!nock.isActive()) nock.activate();
let nock001 = nock(`https://zzzzzzz/api/v2/users`)
.post('')
.reply(200);
let nock002 = nock(`https://api.xxxxx.com/`)
.filteringPath(path => '/')
.post('/')
.reply(400);
let nock003 = nock(`https://yyyy.zendesk.com/api/v2/requests.json`)
.post('')
.reply(200);
expect(nock003.isDone()).to.equal(false);
expect(nock002.isDone()).to.equal(false);
expect(nock001.isDone()).to.equal(false);
if (!nock.isDone()) {
console.log('Before test, the active nocks are...', nock.activeMocks())
}
chai.request(server)
.post("/user/create")
.send(testObjects.testStuff)
.then((res) => {
if (!nock.isDone()) {
console.log('Nock use incomplete, test will fail...', nock.activeMocks())
}
expect(nock001.isDone()).to.equal(true);
expect(nock002.isDone()).to.equal(true);
expect(nock003.isDone()).to.equal(true);
res.should.have.status(207);
nock.cleanAll();
nock.restore();
done();
})
.catch((error) => {
console.log("Error: on 207... ", error)
done();
})
})
Вот журналы вывода из Bitbucket:
Before test, the active nocks are... [ 'POST https://zzzzzzz/api/v2/users',
'POST https://api.xxxxx.com/',
'POST https://yyyy.zendesk.com/api/v2/requests.json' ]
Path: /user/create. Email: test1580162547133@test.com. Date: January 27, 10:02:35 PM:130
Error with xxxxx API
Error: xxxxx account was not created for the following user: {/*data here */} Error code: 400 - undefined
Creating Zendesk Ticket: https://yyyy.zendesk.com/api/v2/requests.json
Nock use incomplete, test will fail... [ 'POST https://yyyy.zendesk.com:443/api/v2/requests.json' ]
Error: on 207... { AssertionError: expected false to equal true
at chai.request.post.send.then (/opt/atlassian/pipelines/agent/build/tests/user-create.tests.js:234:53)
at process._tickCallback (internal/process/next_tick.js:68:7)
message: 'expected false to equal true',
showDiff: true,
actual: false,
expected: true }
Любая помощь или указатели будут оценены. Спасибо!