"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > साइप्रस में मॉकिंग और स्टबिंग में महारत हासिल करना: एक व्यापक गाइड

साइप्रस में मॉकिंग और स्टबिंग में महारत हासिल करना: एक व्यापक गाइड

2024-07-31 को प्रकाशित
ब्राउज़ करें:298

Mastering Mocking and Stubbing in Cypress: A Comprehensive Guide

परिचय

जब एंड-टू-एंड परीक्षण की बात आती है, तो बाहरी निर्भरता को नियंत्रित करने से आपके परीक्षणों की विश्वसनीयता और गति में काफी वृद्धि हो सकती है। साइप्रस, एक आधुनिक वेब परीक्षण ढांचा, HTTP अनुरोधों को मॉक करने और स्टब करने के लिए शक्तिशाली क्षमताएं प्रदान करता है, जो आपको वास्तविक बैकएंड सेवाओं पर भरोसा किए बिना विभिन्न परिदृश्यों का अनुकरण करने की अनुमति देता है। इस पोस्ट में, हम यह पता लगाएंगे कि आपके परीक्षणों को अधिक मजबूत और कुशल बनाने के लिए एपीआई कॉल को मॉकिंग और स्टबिंग करने के लिए साइप्रस के cy.intercept() का लाभ कैसे उठाया जाए।

उपहास और ठूंठ क्यों?

साइप्रस में HTTP अनुरोधों को मॉकिंग और स्टब करने से कई लाभ मिलते हैं:

  1. अलगाव: बैकएंड से स्वतंत्र रूप से फ्रंटएंड का परीक्षण करें, यह सुनिश्चित करते हुए कि आपके परीक्षण बैकएंड परिवर्तन या आउटेज से प्रभावित नहीं हैं।
  2. गति: वास्तविक नेटवर्क कॉल से बचकर परीक्षण निष्पादन समय कम करें।
  3. विश्वसनीयता: विभिन्न प्रतिक्रियाओं और किनारे के मामलों का अनुकरण करके पूर्वानुमानित और सुसंगत परीक्षण स्थितियां बनाएं।
  4. लचीलापन: बैकएंड परिवर्तनों की आवश्यकता के बिना त्रुटियों, धीमी प्रतिक्रियाओं और विभिन्न डेटा पेलोड जैसे विभिन्न परिदृश्यों का परीक्षण करें।

सरू की स्थापना

यदि आपने अभी तक साइप्रस स्थापित नहीं किया है, तो आप इसे निम्नलिखित कमांड के साथ सेट कर सकते हैं:

npm install cypress --save-dev
npx cypress open

सुनिश्चित करें कि आगे बढ़ने से पहले आपके पास बुनियादी साइप्रस परियोजना संरचना तैयार है।

cy.intercept() का उपयोग करना

साइप्रेस में cy.intercept() कमांड आपको नेटवर्क अनुरोधों और प्रतिक्रियाओं को रोकने और संशोधित करने की अनुमति देता है। यह अप्रचलित cy.route() कमांड को प्रतिस्थापित करता है और अधिक लचीलापन और शक्ति प्रदान करता है।

बुनियादी उदाहरण
आइए एक बुनियादी उदाहरण से शुरू करें जहां हम एक एपीआई प्रतिक्रिया का मजाक उड़ाते हैं:

// cypress/integration/mock_basic.spec.js
describe('Mocking API Responses', () => {
  it('should display mocked data', () => {
    cy.intercept('GET', '/api/todos', {
      statusCode: 200,
      body: [
        { id: 1, title: 'Mocked Todo 1', completed: false },
        { id: 2, title: 'Mocked Todo 2', completed: true }
      ]
    }).as('getTodos');

    cy.visit('/todos');
    cy.wait('@getTodos');

    cy.get('.todo').should('have.length', 2);
    cy.get('.todo').first().should('contain.text', 'Mocked Todo 1');
  });
});

इस उदाहरण में, हम /api/todos के लिए एक GET अनुरोध को रोकते हैं और एक नकली प्रतिक्रिया प्रदान करते हैं। As('getTodos') इंटरसेप्टेड अनुरोध के लिए एक उपनाम निर्दिष्ट करता है, जिससे आपके परीक्षणों में संदर्भ देना आसान हो जाता है।

उन्नत मॉकिंग परिदृश्य

त्रुटियों का अनुकरण
यह जांचने के लिए कि आपका एप्लिकेशन उन्हें कैसे संभालता है, आप विभिन्न HTTP त्रुटि स्थितियों का अनुकरण कर सकते हैं:

// cypress/integration/mock_errors.spec.js
describe('Simulating API Errors', () => {
  it('should display error message on 500 response', () => {
    cy.intercept('GET', '/api/todos', {
      statusCode: 500,
      body: { error: 'Internal Server Error' }
    }).as('getTodosError');

    cy.visit('/todos');
    cy.wait('@getTodosError');

    cy.get('.error-message').should('contain.text', 'Failed to load todos');
  });
});

प्रतिक्रियाओं में देरी
यह जांचने के लिए कि आपका एप्लिकेशन धीमी नेटवर्क प्रतिक्रियाओं को कैसे संभालता है, आप विलंब का परिचय दे सकते हैं:

// cypress/integration/mock_delays.spec.js
describe('Simulating Slow Responses', () => {
  it('should display loading indicator during slow response', () => {
    cy.intercept('GET', '/api/todos', (req) => {
      req.reply((res) => {
        res.delay(2000); // 2-second delay
        res.send({ body: [] });
      });
    }).as('getTodosSlow');

    cy.visit('/todos');
    cy.get('.loading').should('be.visible');
    cy.wait('@getTodosSlow');
    cy.get('.loading').should('not.exist');
  });
});

विशिष्ट परिदृश्यों का उपहास करना

सशर्त उपहास
आप अनुरोध निकाय या हेडर के आधार पर सशर्त रूप से प्रतिक्रियाओं का नकल कर सकते हैं:

// cypress/integration/mock_conditional.spec.js
describe('Conditional Mocking', () => {
  it('should mock response based on request body', () => {
    cy.intercept('POST', '/api/todos', (req) => {
      if (req.body.title === 'Special Todo') {
        req.reply({
          statusCode: 201,
          body: { id: 999, title: 'Special Todo', completed: false }
        });
      }
    }).as('createTodo');

    cy.visit('/todos');
    cy.get('input[name="title"]').type('Special Todo');
    cy.get('button[type="submit"]').click();

    cy.wait('@createTodo');
    cy.get('.todo').should('contain.text', 'Special Todo');
  });
});

मॉकिंग और स्टबिंग के लिए सर्वोत्तम अभ्यास

  1. उपनाम का उपयोग करें: हमेशा .as() का उपयोग करके इंटरसेप्ट किए गए अनुरोधों के लिए उपनाम निर्दिष्ट करें। यह आपके परीक्षणों को अधिक पठनीय और डीबग करना आसान बनाता है।
  2. फिक्स्चर के साथ संयोजित करें: बेहतर रखरखाव और पठनीयता के लिए फिक्स्चर फ़ाइलों में बड़े नकली डेटा को स्टोर करें। फिक्स्चर लोड करने के लिए cy.fixture() का उपयोग करें।
  3. अति-मजाक से बचें: केवल वही नकल करें जो परीक्षण के लिए आवश्यक है। अत्यधिक मजाक उड़ाने से ऐसे परीक्षण हो सकते हैं जो वास्तविक दुनिया के परिदृश्यों को प्रतिबिंबित नहीं करते हैं।
  4. वास्तविक एपीआई कॉल का परीक्षण करें: यह सुनिश्चित करने के लिए कि आपका एप्लिकेशन वास्तविक डेटा के साथ सही ढंग से काम करता है, समय-समय पर वास्तविक बैकएंड के विरुद्ध परीक्षण करें।

निष्कर्ष

साइप्रस में मॉकिंग और स्टबिंग शक्तिशाली तकनीकें हैं जो आपके परीक्षणों को तेज़, अधिक विश्वसनीय और बनाए रखने में आसान बना सकती हैं। HTTP अनुरोधों को इंटरसेप्ट करके और कस्टम प्रतिक्रियाएँ प्रदान करके, आप बाहरी सेवाओं पर भरोसा किए बिना परीक्षण परिदृश्यों की एक विस्तृत श्रृंखला बना सकते हैं। अपने साइप्रस परीक्षणों में मॉकिंग और स्टबिंग में महारत हासिल करने के लिए इस गाइड में दी गई सर्वोत्तम प्रथाओं और उदाहरणों का पालन करें।

खुश परीक्षण!

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/asvani25/mastering-mocking-and-stubing-in-cypress-a-comprehenive-guide-3028?1 यदि कोई उल्लंघन है, तो कृपया स्टडी_गोलंग@163.com पर संपर्क करें। इसे हटाने के लिए
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3