Ответ 1
Если я правильно помню в суперагент, можно передать хэш, чтобы установить
.set({key:value,key2:value2})
сообщите мне, если он не работает с supertest.
Я использую Supertest с помощью Mocha для тестирования API, разработанного с помощью Node JS.
И я хочу сделать несколько тестов в API. Почти у всех из них я должен снова задать заголовки авторизации и Content-Type (потому что API требует их для этого теста).
it('Creation without an email address should fail and return error code 50040', function(done) {
request
.post('/mpl/entities')
.set('Authorization', 'Token 1234567890') //set header for this test
.set('Content-Type', 'application/json') //set header for this test
.send({
firstname: "test"
})
.expect('Content-Type', /json/)
.expect(500)
.expect(anErrorCode('50040'))
.end(done);
});
it('Creation with a duplicate email address should fail and return error code 50086', function(done) {
request
.post('/mpl/entities')
.set('Authorization', 'Token 1234567890') //<-- again
.set('Content-Type', 'application/json') //<-- again, I'm getting tired
.send({
email: "[email protected]"
})
.expect('Content-Type', /json/)
.expect(500)
.expect(anErrorCode('50086'))
.end(done);
});
Можно ли создать альтернативный запрос с установленными по умолчанию заголовками?
Если я правильно помню в суперагент, можно передать хэш, чтобы установить
.set({key:value,key2:value2})
сообщите мне, если он не работает с supertest.
Вы можете использовать общую процедуру для создания своих "стандартных" заголовков в качестве объекта и передать их запросу:
//# file:config.js
var config = {
authorization: { "Authorization":"authvalue" }
}
// Content-Type left out because supertest will use Content-Type json when you use the appropriate method
module.exports = config;
И теперь в вашем test.js:
//# file:test.js
var request = require("supertest");
var config = require("./config");
request = request(config.baseUrl)
var commonHeaders = { "authorization":"TokenValueASDF" };
describe("testing", function() {
it.should('present authorization header to server', function(done) {
request.get('/someurl')
.set(commonHeaders)
.set({"X-TestSpecificHeader":"Value"})
.expect(200,done) //if not authorized you'd get 401
})
})
Кроме того, если вам нужно, чтобы ваше приложение получило это значение токена во время выполнения (скорее всего), см. эту статью для использования запрашиваемого значения токена, которое генерируется для тестов: https://jaketrent.com/post/authenticated-supertest-tests/
Вы можете применить пакет superagent-defaults
следующим образом:
npm install --save-dev supertest superagent-defaults
var defaults = require('superagent-defaults');
var supertest = require('supertest');
var request = defaults(supertest(app)); // or url
// set the default headers
request.set(commonHeaders);
// use as usually