सिंगल पेज एप्लिकेशन (एसपीए) पूरे पेज को पुनः लोड करने की आवश्यकता के बिना वेब पेज की सामग्री को गतिशील रूप से अपडेट करके एक निर्बाध उपयोगकर्ता अनुभव प्रदान करने की अपनी क्षमता के लिए तेजी से लोकप्रिय हो रहे हैं। हालाँकि, एसपीए का परीक्षण उनकी गतिशील प्रकृति और अतुल्यकालिक संचालन, जटिल राज्य प्रबंधन और क्लाइंट-साइड रूटिंग को संभालने की आवश्यकता के कारण चुनौतीपूर्ण हो सकता है। इस पोस्ट में, हम आधुनिक जावास्क्रिप्ट परीक्षण ढांचे का उपयोग करके एसपीए के लिए एक मजबूत परीक्षण सूट बनाने के लिए रणनीतियों और सर्वोत्तम प्रथाओं का पता लगाएंगे।
एसपीए का परीक्षण कई कारणों से महत्वपूर्ण है:
एसपीए के लिए एक मजबूत परीक्षण सूट बनाने के लिए, आपको विभिन्न प्रकार के परीक्षण लागू करने चाहिए, जिनमें से प्रत्येक का एक अलग उद्देश्य होता है:
कई उपकरण और ढांचे आपको एसपीए का प्रभावी ढंग से परीक्षण करने में मदद कर सकते हैं:
1. अपना परीक्षण वातावरण स्थापित करें
आरंभ करने के लिए, आवश्यक परीक्षण उपकरण और ढाँचे स्थापित करें। रिएक्ट एप्लिकेशन के लिए, आप जेस्ट, रिएक्ट टेस्टिंग लाइब्रेरी और साइप्रस इंस्टॉल कर सकते हैं:
npm install --save-dev jest @testing-library/react cypress
2. घटकों और कार्यों के लिए यूनिट परीक्षण लिखें
यूनिट परीक्षणों में व्यक्तिगत घटकों और कार्यों को शामिल किया जाना चाहिए। उदाहरण के लिए, यदि आपके पास रिएक्ट में एक बटन घटक है, तो यह सुनिश्चित करने के लिए एक परीक्षण लिखें कि यह सही ढंग से प्रस्तुत होता है और क्लिक घटनाओं को संभालता है:
// Button.js import React from 'react'; function Button({ label, onClick }) { return ; } export default Button;
// Button.test.js import React from 'react'; import { render, fireEvent } from '@testing-library/react'; import Button from './Button'; test('renders the button with the correct label', () => { const { getByText } = render(); expect(getByText('Click me')).toBeInTheDocument(); }); test('calls the onClick handler when clicked', () => { const handleClick = jest.fn(); const { getByText } = render(); fireEvent.click(getByText('Click me')); expect(handleClick).toHaveBeenCalledTimes(1); });
3. घटक इंटरैक्शन के लिए एकीकरण परीक्षण लिखें
एकीकरण परीक्षण यह सुनिश्चित करते हैं कि कई घटक अपेक्षा के अनुरूप एक साथ काम करते हैं। उदाहरण के लिए, एक फॉर्म घटक का परीक्षण करना जो राज्य प्रबंधन लाइब्रेरी के साथ इंटरैक्ट करता है:
// Form.js import React, { useState } from 'react'; function Form() { const [input, setInput] = useState(''); const handleSubmit = (event) => { event.preventDefault(); // handle form submission }; return (); } export default Form;
// Form.test.js import React from 'react'; import { render, fireEvent } from '@testing-library/react'; import Form from './Form'; test('updates input value and handles form submission', () => { const { getByRole, getByDisplayValue } = render(); const input = getByRole('textbox'); fireEvent.change(input, { target: { value: 'New value' } }); expect(getByDisplayValue('New value')).toBeInTheDocument(); const button = getByRole('button', { name: /submit/i }); fireEvent.click(button); // add more assertions as needed });
4. पूर्ण उपयोगकर्ता प्रवाह के लिए एंड-टू-एंड टेस्ट लिखें
E2E परीक्षण पूर्ण एप्लिकेशन प्रवाह को कवर करते हुए वास्तविक उपयोगकर्ता इंटरैक्शन का अनुकरण करते हैं। उदाहरण के लिए, लॉगिन प्रवाह का परीक्षण:
// cypress/integration/login.spec.js describe('Login Flow', () => { it('allows a user to log in', () => { cy.visit('/login'); cy.get('input[name="username"]').type('testuser'); cy.get('input[name="password"]').type('password123'); cy.get('button[type="submit"]').click(); cy.url().should('include', '/dashboard'); cy.contains('Welcome, testuser').should('be.visible'); }); });
5. अतुल्यकालिक संचालन संभालें
एसपीए अक्सर एपीआई कॉल जैसे अतुल्यकालिक संचालन पर भरोसा करते हैं। सुनिश्चित करें कि आपके परीक्षण उचित उपकरणों का उपयोग करके इन्हें सही ढंग से संभालें। उदाहरण के लिए, साइप्रस में, आप एपीआई कॉल को इंटरसेप्ट और मॉक कर सकते हैं:
cy.intercept('POST', '/api/login', { statusCode: 200, body: { token: 'fake-jwt-token' } }).as('login'); cy.get('button[type="submit"]').click(); cy.wait('@login').its('response.statusCode').should('eq', 200);
6. पृथक परीक्षणों के लिए मॉकिंग और स्टबिंग का उपयोग करें
बाहरी निर्भरता से घटकों और कार्यों को अलग करने के लिए मॉकिंग और स्टबिंग आवश्यक हैं। जेस्ट में, आप मॉड्यूल और फ़ंक्शंस का अनुकरण करने के लिए jest.mock() का उपयोग कर सकते हैं:
// api.js export const fetchData = () => { return fetch('/api/data').then(response => response.json()); }; // api.test.js import { fetchData } from './api'; jest.mock('./api', () => ({ fetchData: jest.fn(), })); test('fetchData makes a fetch call', () => { fetchData(); expect(fetchData).toHaveBeenCalled(); });
7. परीक्षण प्रदर्शन को अनुकूलित करें
यह सुनिश्चित करने के लिए कि आपका परीक्षण सूट कुशलतापूर्वक चले, इन सर्वोत्तम प्रथाओं का पालन करें:
8. परीक्षणों को सीआई/सीडी पाइपलाइनों में एकीकृत करें
अपने परीक्षण सूट को सीआई/सीडी पाइपलाइन में एकीकृत करके अपनी परीक्षण प्रक्रिया को स्वचालित करें। यह सुनिश्चित करता है कि प्रत्येक कमिट या पुल अनुरोध पर परीक्षण स्वचालित रूप से चलते हैं, विकास प्रक्रिया में समस्याओं को जल्दी पकड़ लेते हैं।
गिटहब क्रियाओं के साथ उदाहरण:
name: CI on: [push, pull_request] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Install Node.js uses: actions/setup-node@v2 with: node-version: '14' - run: npm install - run: npm test - run: npm run cypress:run
उच्च गुणवत्ता वाले उपयोगकर्ता अनुभव और रखरखाव योग्य कोडबेस सुनिश्चित करने के लिए सिंगल पेज एप्लिकेशन (एसपीए) के लिए एक मजबूत परीक्षण सूट का निर्माण आवश्यक है। यूनिट, एकीकरण और एंड-टू-एंड परीक्षणों को मिलाकर, आप अपने एसपीए के सभी पहलुओं को कवर कर सकते हैं और बग को जल्दी पकड़ सकते हैं। जेस्ट, रिएक्ट टेस्टिंग लाइब्रेरी और साइप्रस जैसे आधुनिक उपकरणों के साथ-साथ मॉकिंग, एसिंक्रोनस हैंडलिंग और सीआई/सीडी एकीकरण जैसी सर्वोत्तम प्रथाओं का उपयोग करके, आप एक विश्वसनीय और कुशल परीक्षण सूट बना सकते हैं जो आपके एप्लिकेशन को लंबे समय तक फलने-फूलने में मदद करेगा।
खुश परीक्षण!
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3