javascript - सुपरटेस्ट के साथ, क्या मैं डिफ़ॉल्ट रूप से सेट कुछ शीर्षकों के साथ एक वैकल्पिक अनुरोध बना सकता हूं?




node.js express (2)

अगर मुझे आश्चर्यजनक में सही याद है तो एक हैश सेट करने के लिए पास कर सकता है

.set({key:value,key2:value2})

अगर मुझे सुपरटेस्ट के साथ काम नहीं करता है तो मुझे बताएं।

https://code.i-harness.com

मैं नोड जेएस के साथ विकसित एपीआई का परीक्षण करने के लिए मोचा के साथ Supertest का उपयोग कर रहा हूं।

और मैं एपीआई पर विभिन्न परीक्षणों का एक छोटा सा काम करना चाहता हूं। लगभग सभी के साथ मुझे प्राधिकरण और सामग्री-प्रकार शीर्षलेख फिर से सेट करना होगा (क्योंकि 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);
});

क्या मैं डिफ़ॉल्ट रूप से सेट किए गए हेडर के साथ एक वैकल्पिक अनुरोध बना सकता हूं?


आप ऑब्जेक्ट के रूप में अपने "डिफ़ॉल्ट" हेडर बनाने के लिए एक सामान्य दिनचर्या का उपयोग कर सकते हैं और अनुरोध पर उन्हें पास कर सकते हैं:

//# 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/





supertest