मैं जैपियर के सीएलआई में कार्रवाई का परीक्षण करने के लिए कुछ कोड लिख रहा हूं। मैं यहां एक और शर्त जोड़ना चाहता हूं जैसे response.status == 200 or 201; एपीआई प्रतिक्रिया कोड की जांच करने के लिए 200 या 201 है।

मैं यह कैसे कर सकता हूं? जब मैं प्रतिक्रिया लॉग करता हूं तो यह मुझे संपूर्ण JSON ऑब्जेक्ट देता है कि API वापस आ रहा है।

describe("contact create", () => {
  it("should create a contact", done => {
    const bundle = {
      inputData: {
        firstName: "Test",
        lastName: "Contact",
        email: "Contact@test.com",
        mobileNumber: "+12125551234",
        type: "contact"
      }
    };
    appTester(App.creates.contact.operation.perform, bundle)
      .then(response => {

        // Need one more condition whether response status is 200 or 201.

        response.should.not.be.an.Array();
        response.should.have.property('id');
        done();
      })
      .catch(done);
  });
});

2
Akash Jain 31 अगस्त 2019, 13:22

1 उत्तर

सबसे बढ़िया उत्तर

appTester, perform पद्धति का परिणाम देता है, जो API प्रतिक्रिया नहीं है। यह डेटा है जो जैपियर में वापस भेज दिया गया है।

सबसे अच्छी बात यह है कि अपने perform में इस तरह की एक पंक्ति जोड़ें:

// after your `z.request`
if (!(response.status === 200 || response.status === 201)) {
  throw new Error('need a 200/201 response')
}

यह सुनिश्चित करेगा कि आपको ठीक वही प्रतिक्रिया मिल रही है जो आप चाहते हैं। लेकिन, अधिक संभावना है, आप यह सुनिश्चित करने के लिए एक response.throwForStatus() जोड़ सकते हैं कि यह कोई त्रुटि कोड नहीं है और यदि यह ठीक 200/201 है तो चिंता न करें।

2
xavdid 3 सितंबर 2019, 17:06