मोकिंग
परीक्षण लिखते समय यह केवल कुछ समय पहले की बात है जब आपको आंतरिक - या बाहरी - सेवा का "नकली" संस्करण बनाने की आवश्यकता होती है। इसे आमतौर पर मजाक के रूप में जाना जाता है। WebdriverIO आपकी मदद करने के लिए उपयोगिता कार्य प्रदान करता है। आप इसे एक्सेस करने के लिए import { fn, spyOn, mock, unmock } से '@wdio/browser-runner'
} इम्पोर्ट कर कते हैं उपलब्ध मॉकिंग उपयोगिताओं के बारे में अधिक जानकारी एपीआई डॉक्समें देखें।
कार्य
यह सत्यापित करने के लिए कि कुछ फ़ंक्शन हैंडलर को आपके घटक परीक्षणों के हिस्से के रूप में बुलाया जाता है या नहीं, @wdio/browser-runner
मॉड्यूल मॉकिंग प्रिमिटिव निर्यात करता है जिसका उपयोग आप परीक्षण के लिए कर सकते हैं, यदि इन फ़ंक्शंस को कॉल किया गया है। आप इन तरीकों को आयात कर सकते हैं:
import { fn, spy } from '@wdio/browser-runner'
fn
आयात करके आप इसके निष्पादन को ट्रैक करने के लिए एक स्पाई फंक्शन (नकली) बना सकते हैं और spyOn
के साथ पहले से निर्मित वस्तु पर एक विधि को ट्रैक कर सकते हैं ।
- Mocks
- Spies
पूरा उदाहरण घटक परीक्षण उदाहरण में पाया जा सकता है। भंडार।
import React from 'react'
import { $, expect } from '@wdio/globals'
import { fn } from '@wdio/browser-runner'
import { Key } from 'webdriverio'
import { render } from '@testing-library/react'
import LoginForm from '../components/LoginForm'
describe('LoginForm', () => {
it('should call onLogin handler if username and password was provided', async () => {
const onLogin = fn()
render(<LoginForm onLogin={onLogin} />)
await $('input[name="username"]').setValue('testuser123')
await $('input[name="password"]').setValue('s3cret')
await browser.keys(Key.Enter)
/**
* verify the handler was called
*/
expect(onLogin).toBeCalledTimes(1)
expect(onLogin).toBeCalledWith(expect.equal({
username: 'testuser123',
password: 's3cret'
}))
})
})
पूरा उदाहरण examples निर्देशिका में पाया जा सकता है।
import { expect, $ } from '@wdio/globals'
import { spyOn } from '@wdio/browser-runner'
import { html, render } from 'lit'
import { SimpleGreeting } from './components/LitComponent.ts'
const getQuestionFn = spyOn(SimpleGreeting.prototype, 'getQuestion')
describe('Lit Component testing', () => {
it('should render component', async () => {
render(
html`<simple-greeting name="WebdriverIO" />`,
document.body
)
const innerElem = await $('simple-greeting').$('p')
expect(await innerElem.getText()).toBe('Hello, WebdriverIO! How are you today?')
})
it('should render with mocked component function', async () => {
getQuestionFn.mockReturnValue('Does this work?')
render(
html`<simple-greeting name="WebdriverIO" />`,
document.body
)
const innerElem = await $('simple-greeting').$('p')
expect(await innerElem.getText()).toBe('Hello, WebdriverIO! Does this work?')
})
})
WebdriverIO सिर्फ @ vitest/spy
को यहां फिर से निर्यात करता है जो एक हल्का जेस्ट संगत स्पाई कार्यान्वयन है जिसका उपयोग WebdriverIOs expect
मैचर्स की अपेक्षा के साथ किया जा सकता है। आप इन मॉक फंक्शन्स के बारे में अधिक दस्तावेज़ीकरण Vitest प्रोजेक्ट पेजपर प्राप्त कर सकते हैं।
बेशक, आप किसी अन्य स्पाई फ्रेमवर्क को स्थापित और आयात भी कर सकते हैं, जैसे SinonJS, जब तक कि यह ब्राउज़र वातावरण का समर्थन करता है।
मॉड्यूल
नकली स्थानीय मॉड्यूल या तृतीय-पक्ष-पुस्तकालयों का निरीक्षण करें, जिन्हें किसी अन्य कोड में लागू किया जाता है, जिससे आप तर्कों, आउटपुट का परीक्षण कर सकते हैं या इसके कार्यान्वयन को फिर से शुरू कर सकते हैं।
मॉक फ़ंक्शंस के दो तरीके हैं: या तो परीक्षण कोड में उपयोग करने के लिए मॉक फ़ंक्शन बनाकर, या मॉड्यूल निर्भरता को ओवरराइड करने के लिए मैन्युअल मॉक लिखकर।
नकली फ़ाइल आयात
आइए कल्पना करें कि हमारा घटक क्लिक को संभालने के लिए फ़ाइल से उपयोगिता विधि आयात कर रहा है।
export function handleClick () {
// handler implementation
}