Я пишу модульные тесты для моего приложения, которые выполняют сторонние вызовы API.Я использую nock, чтобы высмеивать вызовы API.API использует базовую аутентификацию с использованием имени пользователя и пароля.
Здесь приведен модульный тест для аутентификации пользователя, а затем возврата ответа.
describe('Authentication tests', () => {
it('Authenticates user', (done) => {
nock('<MY_URL>')
.get('/api/now/table/test_table/test_sys_id')
.basicAuth({user: 'user', pass: 'pass'})
.reply(200, {'a': 'b'});
let snowClient = require('../Client');
snowClient = new snowClient('<MY_URL>', 'user', 'pass', 'application/json', 'application/json');
snowClient.getSingleRecord('test_table', 'test_sys_id', (response) => {
console.log(response);
expect(typeof response).to.be.a('string');
// expect(JSON.parse(response).a).to.equal('b');
done();
});
});
});
Но когда я запускаю этот тест, nock выдает следующую ошибку:
Error: Nock: No match for request {
"method": "GET",
"url": "<MY_URL>/api/now/table/test_table/test_sys_id",
"headers": {
"accept": "application/json",
"content-type": "application/json",
"host": "<MY_URL>"
}
}
Но когда я удаляю .basicAuth()
из nock, он работает правильно.Что мне здесь не хватает?Это правильный метод для проверки подлинности вызовов API с использованием nock?
РЕДАКТИРОВАТЬ:
Вот код getSingleRecord
:
getSingleRecord(table, sysId, callback){
new Promise((resolve, reject) => {
var requestParams = utils.setRequestParamsWithoutBody(this.headers,
this.auth,
'GET',
utils.URLBuilder(this.instance, this.namespace, this.apiName, table, sysId));
request(requestParams, (err, res) => {
var errorMessage = this._handleErrors(res, err);
if (errorMessage){
return reject(errorMessage);
}
resolve(res.body);
});
}).then((response) => {
callback(response);
}).catch((error) => {
callback(error);
});
}