هذه المكتبة عبارة عن نسخة وهمية من XMLHttpRequest
التي توفر واجهة بسيطة لمحاكاة التفاعلات مع XMLHttpRequest
. إنه بديل مباشر لـ XMLHttpRequest
لاختباراتك.
تطبق هذه المكتبة واجهة XMLHttpRequest
وتتعامل مع الطلبات والأحداث كما هو محدد في مواصفات XMLHTTPRequest دون استخدام طلبات الشبكة الحقيقية. يمكنك الرد على الطلبات الوهمية بثلاث طرق:
يمكنك محاكاة الاستجابات وتقدم التحميل والأخطاء والتفاعلات الأخرى باستخدام طرق الاستجابة الوهمية. تتعامل هذه العناصر تلقائيًا مع المعالجة ذات المستوى الأدنى مثل إرسال الأحداث وتغيير خاصية readystate
لـ XMLHttpRequest
.
MockXhr
برمجياًtimeout
ومهلات الطلبMockXhr
MockXhrServer
MockXhrServer
MockXhr
MockXhr
MockXhrRequest
newMockXhr()
newServer()
XMLHttpRequest
عبر npm (مدير حزم العقدة)
$ npm install mock-xmlhttprequest
import { newServer } from 'mock-xmlhttprequest' ;
import { functionToTest } from '../src/SomethingToTest' ;
// Adapt based on your testing framework. This example uses Mocha and Chai's syntax.
it ( 'should produce a success response' , async ( ) => {
const server = newServer ( {
get : [ '/my/url' , {
// status: 200 is the default
headers : { 'Content-Type' : 'application/json' } ,
body : '{ "message": "Success!" }' ,
} ] ,
} ) ;
try {
// Installs the server's XMLHttpRequest mock in the "global" context.
// After this, "new XMLHttpRequest()" creates a mock request to which the server replies.
server . install ( /* optional context; defaults to globalThis */ ) ;
// Do something that send()s an XMLHttpRequest to '/my/url' and returns a Promise
// that resolves to the parsed JSON response
const result = await functionToTest ( ) ;
assert . equal ( result . message , 'Success!' ) ;
} finally {
// Restore the original XMLHttpRequest
server . remove ( ) ;
}
} ) ;
فئة XMLHttpRequest
النموذجية هي MockXhr
. يعرض نفس الواجهة مثل XMLHttpRequest
وهو بديل مباشر لاختبار التعليمات البرمجية الذي يستخدم XMLHttpRequest
.
هناك خياران للتحكم في سلوك مثيلات MockXhr
:
XMLHttpRequest
خطافات دورة الحياة. استخدم هذا إذا كنت بحاجة إلى مزيد من التحكم في الطلبات دون الميزات التي يوفرها الخادم الوهمي. تطبق فئة MockXhrServer
الخادم الوهمي. يمكنك إنشاء MockXhrServer
باستخدام newServer
. يستجيب MockXhrServer
تلقائيًا لطلبات MockXhr
ويجعل اختبارات الكتابة سهلة.
الهيكل الأساسي للاختبارات التي تستخدم MockXhrServer
هو:
import { newServer } from 'mock-xmlhttprequest' ;
const server = newServer ( /* routes */ ) ;
try {
server . install ( /* optional context; defaults to globalThis */ ) ;
// Test your code that creates XMLHttpRequests
} finally {
// Reverts server.install() at the end of the test.
// Only do this after the test case has finished creating XMLHttpRequests.
server . remove ( ) ;
}
هناك طريقتان لجعل التعليمات البرمجية الخاصة بك تستخدم فئة MockXhr
كبديل لـ XMLHttpRequest
. يتيح ذلك لـ MockXhrServer
الاستجابة للطلبات:
install()
لاستبدال فئة XMLHttpRequest
عالميًا بفئة MockXhr
الخاصة بالخادم. في نهاية حالة الاختبار، قم باستدعاء remove()
لاستعادة الحالة الأصلية.XMLHttpRequest
، فاستخدم فئة MockXhr
مباشرة مع إحدى خصائص MockXhrServer
التالية:xhrFactory
هي دالة تقوم بإنشاء مثيل MockXhr
.MockXhr
هي فئة المثيلات التي تم إنشاؤها بواسطة xhrFactory
. يوضح هذا الرمز استخدام xhrFactory
:
import { newServer } from 'mock-xmlhttprequest' ;
const server = newServer ( /* routes */ ) ;
const savedFactory = MyClass . xhrFactory ;
try {
MyClass . xhrFactory = server . xhrFactory ;
// Test code that creates XMLHttpRequests through MyClass.xhrFactory()
} finally {
// Only do this after the test case has finished creating XMLHttpRequests.
MyClass . xhrFactory = savedFactory ;
}
تحدد المسارات كيفية استجابة MockXhrServer
لطلبات MockXhr
. هذه لها ثلاثة أجزاء:
عند إرسال طلب MockXhr
، يبحث MockXhrServer
عن المسار الأول الذي يطابق طريقة الطلب وعنوان URL. ثم يستجيب باستخدام معالج طلب المسار. يمكنك أيضًا تعيين معالج الطلب الافتراضي. يتم تعريف معالجات الطلب إما تعريفيًا أو برمجيًا.
افتراضيًا، إذا تم تعيين سمة timeout
الطلب على قيمة غير صفرية ولم يستجب MockXhrServer
للطلب، فستنتهي المهلة في النهاية.
هناك طريقتان لإضافة مسارات إلى MockXhrServer
:
routes
لـ newServer
.MockXhrServer
التي تضيف المسارات. يسجل MockXhrServer
جميع طلبات MockXhr
التي يتلقاها في سجل الطلبات. استخدم هذا للتحقق من صحة طلبات XMLHttpRequest
التي يرسلها الرمز الخاص بك.
يمكن لـ MockXhrServer
إنشاء أحداث تقدم الطلب (التحميل) والاستجابة (التنزيل) تلقائيًا. تم تعطيل هذا بشكل افتراضي. استخدم حقل progressRate
لتمكين هذا.
يمكنك أيضًا إنشاء أحداث تقدم إذا استجبت لطلبات MockXhr
برمجيًا باستخدام معالج طلب من النوع Function
.
الاستجابات لطلبات MockXhr
غير متزامنة. يؤدي هذا إلى إعادة إنتاج كيفية عمل طلب XMLHttpRequest
الحقيقي. لذلك ستحتاج على الأرجح إلى استخدام دعم الاختبار غير المتزامن لإطار عمل الاختبار الخاص بك. على سبيل المثال، الوثائق ذات الصلة بإطار اختبار Mocha موجودة هنا.
يعد ربط دورة حياة onSend
ضروريًا للرد على طلبات MockXhr
. يتعامل الخادم الوهمي مع هذا تلقائيًا. الخيار الآخر هو استخدام خطافات دورة حياة MockXhr
مباشرة. في كلتا الحالتين، يتم تنفيذ خطاف دورة حياة onSend
بعد انتهاء سياق التنفيذ الذي يستدعي XMLHttpRequest.send()
أو مسحه. داخليًا، تستخدم هذه المكتبة Promise
تم حله على الفور للحصول على مكدس استدعاء فارغ.
MockXhr
برمجياً هناك العديد من أساليب وخصائص MockXhr
للرد على الطلبات. تسمح هذه الطرق بالتفاعلات التالية:
راجع قسم طرق الاستجابة الوهمية للحصول على التفاصيل.
timeout
ومهلات الطلب افتراضيًا، إذا قمت بتعيين سمة timeout
الخاصة بـ XMLHttpRequest
في التعليمات البرمجية الخاصة بك، فإن MockXhr
يطلب تلقائيًا انتهاء المهلة بعد التأخير المحدد. يؤدي هذا إلى إصدار حدث timeout
وإلغاء الطلب كما هو موضح في المواصفات.
الاعتماد على مرور الوقت لاختبار كيفية تعامل التعليمات البرمجية الخاصة بك مع المهلات بشكل عام يجعل الاختبارات هشة ويصعب تصحيحها. يمكنك بدلًا من ذلك تشغيل المهلات برمجيًا باستخدام setRequestTimeout()
.
قم بتعطيل مهلات الطلب التلقائية باستخدام أحد الخيارات التالية:
disableTimeout()
على MockXhrServer
. يؤثر هذا على جميع مثيلات MockXhr
التي يتعامل معها.MockXhr.timeoutEnabled = false
. تؤثر هذه الخاصية الثابتة في فئة MockXhr
على كل مثيلاتها.timeoutEnabled
على false
في مثيل MockXhr
. يؤثر هذا على هذا المثيل فقط.MockXhr
هذا هو نمط استخدام بديل لا يستخدم MockXhrServer
. يمكنك بدلاً من ذلك استخدام خطافات دورة حياة MockXhr
مباشرةً. يتطلب هذا المزيد من التعليمات البرمجية، ولكن لديك المزيد من التحكم في طلبات MockXhr
.
لاحظ أنه يمكنك أيضًا استخدام خطافات دورة حياة MockXhr
مع MockXhrServer
إذا كنت تحتاج فقط إلى توسيع الخادم الوهمي.
مثال:
import { newMockXhr } from 'mock-xmlhttprequest' ;
import { functionToTest } from '../src/SomethingToTest' ;
// Adapt based on your testing framework. This example uses Mocha and Chai's syntax.
it ( 'should produce a success response' , async ( ) => {
// Get a "local" MockXhr subclass
const MockXhr = newMockXhr ( ) ;
// Mock JSON response
MockXhr . onSend = ( request ) => {
const responseHeaders = { 'Content-Type' : 'application/json' } ;
const response = '{ "message": "Success!" }' ;
request . respond ( 200 , responseHeaders , response ) ;
} ;
try {
// Install in the global context so "new XMLHttpRequest()" creates MockXhr instances
global . XMLHttpRequest = MockXhr ;
// Do something that send()s an XMLHttpRequest to '/my/url' and returns a Promise
// that resolves to the parsed JSON response
const result = await functionToTest ( ) ;
assert . equal ( result . message , 'Success!' ) ;
} finally {
// Restore the original XMLHttpRequest
delete global . XMLHttpRequest ;
}
} ) ;
MockXhrServer
هذه الفئة عبارة عن خادم وهمي يستجيب لطلبات MockXhr
بناءً على عنوان URL الخاص بها وأسلوبها.
MockXhrServer
MockXhrServer(routes)
الحجج:
routes
: كائن يحتوي على المجموعة الأولية من مسارات الخادم. (خياري) في معظم الحالات، يجب عليك استخدام newServer
بدلاً من هذا المُنشئ مباشرةً.
مفاتيح كائن routes
هي طرق HTTP. القيم عبارة عن صفائف تحتوي على عنصرين: [url_matcher, request_handler]
.
راجع أيضًا طلب مُطابق عنوان URL ومعالج الطلب.
مثال:
const handlerFn = ( request ) => { request . respond ( ) ; } ;
newServer ( {
get : [ '/get' , { status : 200 } ] ,
'my-method' : [ '/my-method' , { status : 201 } ] ,
post : [ '/post' , [ handlerFn , { status : 404 } ] ] ,
} ) ;
install(context = globalThis)
الحجج:
context
: إذا قمت بتوفير قيمة، فإن طريقة install
تقوم بتعيين خاصية XMLHttpRequest
في هذا السياق بدلاً من السياق العام. (خياري) تثبيت نموذج MockXhr
الخاص بالخادم في السياق العام لاستبدال فئة XMLHttpRequest
. العودة مع إزالة ().
remove()
إرجاع التغييرات التي أجراها التثبيت (). اتصل بهذا بعد اختباراتك.
progressRate
إذا قمت بتعيين progressRate
على number
أكبر من 0، فسيقوم الخادم تلقائيًا بإنشاء أحداث تقدم الطلب (التحميل) والاستجابة (التنزيل). يزيد كل حدث تقدم بمقدار بايت progressRate
.
لا ينطبق progressRate
إلا على معالجات الطلب object
النوع.
disableTimeout()
و enableTimeout()
تعمل هذه الطرق على تعطيل أو تمكين تأثيرات سمة timeout
الخاصة بـ MockXhr
. راجع "سمة timeout
ومهلة الطلب".
تقوم المسارات بتكوين كيفية استجابة الخادم لطلبات MockXhr
. يتم وصف الأجزاء الثلاثة الخاصة بهم أدناه.
يعتمد مفهوم المسار بشكل فضفاض على إطار عمل Express.
يُسمح بأي string
تحتوي على طريقة طلب HTTP صالحة. تتضمن الطرق الصالحة طرقًا قياسية مثل GET
و POST
و PUT
و DELETE
، بالإضافة إلى أسماء الطرق الأخرى. أسماء الأساليب القياسية غير حساسة لحالة الأحرف.
يمكن أن يكون مُطابق عنوان URL للطلب أحد هذه الأنواع:
string
(على سبيل المثال '/my-url'
) تتطابق تمامًا مع عنوان URL للطلب.RegExp
لمطابقة عنوان URL للطلب.Function
تُرجع true
إذا كان عنوان URL للطلب مطابقًا. تتلقى الدالة عنوان URL كوسيطة. يمكن أن يكون معالج الطلب أحد هذه الأنواع:
object
مع خصائص الاستجابة. القيم الافتراضية هي:
{ status: 200, headers: {}, body: null, statusText: 'OK' }
Function
تستدعي أساليب الاستجابة الوهمية مباشرةً. تتلقى الدالة مثيل MockXhrRequest
كوسيطة.
string
ذات القيمة 'error'
أو 'timeout'
. يؤدي هذا إما إلى حدوث خطأ أو انتهاء المهلة على التوالي.
مجموعة من أنواع معالجات الطلبات الأخرى المذكورة أعلاه. يحصل الطلب الأول على المعالج الأول، والثاني على المعالج الثاني، وهكذا. تتم إعادة استخدام المعالج الأخير في حالة عدم وجود معالجات أخرى في المصفوفة.
بالنسبة لمعالجات طلبات object
، يقوم الخادم تلقائيًا بإضافة رأس استجابة Content-Length
مع طول نص الاستجابة.
كل هذه المعالجات متساوية:
const handlerObj = { } ;
const handlerFn = ( request ) => { request . respond ( 200 , { 'Content-Length' : '0' } ) ; } ;
const handlerArray = [ { } ] ;
get(urlMatcher, handler)
الحجج:
urlMatcher
: طلب مطابقة URL.handler
: معالج الطلب. يضيف مسارًا لأسلوب GET
HTTP.
post(urlMatcher, handler)
الحجج:
urlMatcher
: طلب مطابقة URL.handler
: معالج الطلب. يضيف مسارًا لأسلوب POST
HTTP.
put(urlMatcher, handler)
الحجج:
urlMatcher
: طلب مطابقة URL.handler
: معالج الطلب. يضيف مسارًا لأسلوب PUT
HTTP.
delete(urlMatcher, handler)
الحجج:
urlMatcher
: طلب مطابقة URL.handler
: معالج الطلب. يضيف مسارًا لأسلوب DELETE
HTTP.
addHandler(method, urlMatcher, handler)
الحجج:
method
: طريقة HTTP string
.urlMatcher
: طلب مطابقة URL.handler
: معالج الطلب. يضيف مسارًا method
HTTP.
setDefaultHandler(handler)
الحجج:
handler
: معالج الطلب.يضبط معالج الطلب الافتراضي للطلبات التي لا تتطابق مع أي مسار.
setDefault404()
يضبط معالج الطلب الافتراضي الذي يُرجع 404 استجابات.
xhrFactory
دالة تقوم بإرجاع مثيل MockXhr
جديد.
MockXhr
فئة MockXhr
التي يتصل بها الخادم. يقوم xhrFactory
بإنشاء مثيلات لهذه الفئة.
getRequestLog()
إرجاع مصفوفة بجميع الطلبات التي تلقاها الخادم حتى الآن. تقوم كل مكالمة بإرجاع مصفوفة جديدة. كل عنصر من عناصر المصفوفة هو كائن له هذه الخصائص:
method
: string
طريقة HTTP.url
: string
URL.body
: جسم الطلبheaders
: طلب الرؤوس ككائن. أسماء الرؤوس مكتوبة بأحرف صغيرة.MockXhr
هذه الفئة عبارة عن محاكاة لـ XMLHttpRequest
. يوثق هذا القسم طرقه وخصائصه غير الموجودة في المواصفات.
MockXhr.timeoutEnabled
تتحكم هذه الخاصية boolean
الثابتة في المهلة التلقائية للطلبات الواردة من كافة مثيلات الفئة.
timeoutEnabled
تتحكم هذه الخاصية boolean
في المهلة التلقائية من مثيل MockXhr
هذا.
getResponseHeadersHash()
إرجاع كافة رؤوس الاستجابة ككائن. أسماء الرؤوس مكتوبة بأحرف صغيرة.
MockXhr
يمكنك تحديد طرق رد الاتصال لخطافات دورة حياة MockXhr
في هذه المواقع:
MockXhr
. ينطبق الخطاف على كافة مثيلات MockXhr
وفئاته الفرعية.MockXhr
يتم إرجاعها بواسطة MockXhrServer.MockXhr
أو newMockXhr()
. ينطبق الخطاف على كافة مثيلات تلك الفئة.MockXhr
. ينطبق الخطاف على هذا المثيل فقط.إذا قمت بتحديد عدة خطافات لحدث دورة الحياة، فسيتم استدعاؤها بالترتيب أعلاه.
يجب أن تفضل بشكل عام الخيار الثالث الذي يسهل عليك عزل حالات الاختبار الخاصة بك.
onCreate
طريقة رد الاتصال التي تتلقى هذه الوسائط:
xhr
: مثيل MockXhr
جديد. استخدم خطاف دورة الحياة هذا لاعتراض مثيلات MockXhr
عند إنشائها.
يتم استدعاؤه عند إنشاء مثيل MockXhr
، في نهاية مُنشئه. لذلك فإن خطاف دورة الحياة هذا متاح فقط كخاصية ثابتة.
import { MockXhr , newMockXhr } from 'mock-xmlhttprequest' ;
// Called for all instances of MockXhr and all its subclasses
MockXhr . onCreate = ( xhr ) => { /*...*/ } ;
// Called for all instances of this MockXhr subclass
const MockXhrSubclass = newMockXhr ( ) ;
MockXhrSubclass . onCreate = ( xhr ) => { /*...*/ } ;
onSend
طريقة رد الاتصال التي تتلقى هذه الوسائط:
request
: MockXhrRequest
للطلب.xhr
: مثيل MockXhr
.استخدم ربط دورة الحياة هذا للرد على الطلب باستخدام أساليب الاستجابة الوهمية.
يتم الاتصال به بشكل غير متزامن بعد كل مكالمة send()
. يُنشئ كل استدعاء لـ send()
استدعاء لـ onSend
بمثيل منفصل من MockXhrRequest
.
import { MockXhr , newMockXhr } from 'mock-xmlhttprequest' ;
// Called for all instances of MockXhr and all its subclasses
MockXhr . onSend = ( request ) => { /*...*/ } ;
// Called for all instances of this MockXhr subclass
const MockXhrSubclass = newMockXhr ( ) ;
MockXhrSubclass . onSend = ( request ) => { /*...*/ } ;
// Called for this instance only
const xhr = new MockXhrSubclass ( ) ;
xhr . onSend = ( request ) => { /*...*/ } ;
MockXhrRequest
يقوم كل استدعاء send()
بإنشاء MockXhrRequest
الذي يحتوي على معلومات حول XMLHttpRequest
ويوفر طرقًا للاستجابة برمجيًا.
requestHeaders
HeadersContainer
الذي يحتوي على نسخة من رؤوس الطلب.
method
string
تحتوي على أسلوب HTTP للطلب.
url
string
تحتوي على عنوان URL للطلب.
body
متن الطلب.
withCredentials
قيمة boolean
بقيمة withCredentials
للطلب.
getRequestBodySize()
number
البايتات في نص الطلب
ملاحظة: هذا ليس دقيقًا تمامًا عندما يكون body
multipart/form-data
المشفرة FormData
. لا يتم أخذ الرؤوس والتشفير والعوامل الأخرى التي تساهم في الحجم الحقيقي body
XMLHttpRequest
غير المستهزئ في الاعتبار. يمكنك استخدام هذه الطريقة للحصول على قيمة الحد الأدنى لحجم body
الحقيقي للطلب. يعد هذا مفيدًا لمحاكاة أحداث تقدم التحميل.
توفر هذه الطرق واجهة برمجية للرد على طلبات MockXhr
.
إذا كان استدعاء أسلوب الاستجابة غير صالح، فسيظهر Error
مع رسالة تحتوي على "Mock usage error detected"
.
uploadProgress(transmitted)
الحجج:
transmitted
: number
البايتات المرسلة.يطلق طلب تحميل التقدم.
يمكنك استدعاء هذا فقط عندما لا يكون body
الطلب null
ولم يكتمل التحميل.
بعد استدعاء هذه الطريقة، يمكنك استخدام أي طريقة استجابة وهمية أخرى.
respond(status = 200, headers = {}, body = null, statusText = 'OK')
الحجج:
status
: number
حالة HTTP للاستجابة. (خياري)headers
: object
ذو رؤوس الاستجابة. (خياري)body
: جسم الاستجابة. (خياري)statusText
: نص حالة HTTP لاستجابة string
. (خياري) طريقة الاستجابة الكاملة التي تحدد كلاً من رؤوس الاستجابة ونصها. يغير readyState
الطلب إلى DONE
.
يطلق الأحداث المناسبة مثل readystatechange
، progress
، load
.
هذا اختصار لـ setResponseHeaders()
متبوعًا بـ setResponseBody()
.
بعد استدعاء هذه الطريقة، لا يمكنك استخدام طرق استجابة وهمية أخرى. يتم رفع هذا القيد إذا قمت بالاتصال بـ open()
مرة أخرى.
setResponseHeaders(status = 200, headers = {}, statusText = 'OK')
الحجج:
status
: number
حالة HTTP للاستجابة. (خياري)headers
: object
ذو رؤوس الاستجابة. (خياري)statusText
: نص حالة HTTP لاستجابة string
. (خياري) يضبط رؤوس الاستجابة. يغير readyState
الطلب إلى HEADERS_RECEIVED
.
يطلق الأحداث المناسبة مثل readystatechange
، progress
، load
.
بعد استدعاء هذه الطريقة، يمكنك استخدام طرق الاستجابة الوهمية التالية:
downloadProgress()
setResponseBody()
setNetworkError()
setRequestTimeout()
. downloadProgress(transmitted, length)
الحجج:
transmitted
: number
البايتات المرسلة.length
: number
البايتات في الاستجابة. إطلاق حدث تقدم الاستجابة. يغير readyState
الطلب إلى LOADING
إذا كان HEADERS_RECEIVED
.
يجب عليك استدعاء setResponseHeaders()
قبل هذه الطريقة.
setResponseBody(body = null)
الحجج:
body
: جسم الاستجابة. (خياري) يضبط نص الاستجابة. يغير readyState
الطلب إلى DONE
.
يطلق الأحداث المناسبة مثل readystatechange
، progress
، load
.
يستدعي setResponseHeaders()
إذا لم يتم استدعاؤه بالفعل. تحتوي رؤوس الاستجابة بعد ذلك فقط على Content-Length
بقيمة تساوي طول نص الاستجابة.
بعد استدعاء هذه الطريقة، لا يمكنك استخدام طرق استجابة وهمية أخرى. يتم رفع هذا القيد إذا قمت بالاتصال بـ open()
مرة أخرى.
setNetworkError()
يحاكي خطأ في الشبكة. يغير readyState
الطلب إلى DONE
.
يطلق الأحداث المناسبة بما في ذلك حدث error
.
بعد استدعاء هذه الطريقة، لا يمكنك استخدام طرق استجابة وهمية أخرى. يتم رفع هذا القيد إذا قمت بالاتصال بـ open()
مرة أخرى.
setRequestTimeout()
يحاكي مهلة الطلب. يغير readyState
الطلب إلى DONE
.
يطلق الأحداث المناسبة بما في ذلك حدث timeout
.
يلقي خطأ إذا كانت سمة request
تساوي 0 نظرًا لأن المهلات لا تحدث في هذه الحالة.
بعد استدعاء هذه الطريقة، لا يمكنك استخدام طرق استجابة وهمية أخرى. يتم رفع هذا القيد إذا قمت بالاتصال بـ open()
مرة أخرى.
newMockXhr()
إرجاع فئة فرعية جديدة MockXhr
.
إذا كنت تستخدم فئة فرعية مختلفة من MockXhr
في كل حالة اختبار، فمن الأسهل التأكد من أنها مستقلة بذاتها. على سبيل المثال، إذا قمت بتعيين الخاصية الثابتة timeoutEnabled
على فئة فرعية، فإنها تؤثر فقط على تلك الفئة الفرعية وليس الفئات الفرعية الأخرى التي تم إنشاؤها في حالات اختبار أخرى. نظرًا لعدم إعادة استخدام الفئات الفرعية، فإن كود التنظيف الذي يعيد التغييرات التي تم إجراؤها على فئة فرعية ليس مطلوبًا.
newServer(routes)
الحجج:
routes
: كائن يحتوي على المجموعة الأولية من مسارات الخادم. (خياري) إرجاع MockXhrServer
جديد مع فئة MockXhr
الفرعية الفريدة الخاصة به. راجع newMockXhr()
.
قم بإضافة مسارات إلى MockXhrServer
باستخدام وسيطة routes
الاختيارية. راجع المنشئ للحصول على التفاصيل.
XMLHttpRequest
استنادًا إلى إصدار مواصفات XMLHTTPRequest "15 أغسطس 2022".
open()
و setRequestHeader()
و send()
و abort()
.statusText
والرؤوس والنص.timeout
(يمكن تعطيلها).MockXhr.setNetworkError()
).MockXhr.setRequestTimeout()
).overrideMimeType()
يُطلق عند الحاجة، لكن ليس له أي تأثير آخر.responseType
: ''
، 'text'
و 'json'
مدعومة بالكامل. ليس لقيم responseType
أي تأثير على نص الاستجابة الذي تم تمريره إلى setResponseBody()
.responseXml
: لا يتم تحويل نص الاستجابة إلى استجابة مستند. للحصول على استجابة مستند، قم بتمريرها مباشرةً كنص الاستجابة في setResponseBody()
.responseUrl
: لا يتم تعيين عنوان URL للطلب النهائي بعد عمليات إعادة التوجيه تلقائيًا. يمكن محاكاة ذلك في معالج الطلب.async
على false
في open()
).open()
وإلقاء خطأ SyntaxError
عند الفشل. المساهمين هي موضع ترحيب! انظر هذا الدليل لمزيد من المعلومات.
معهد ماساتشوستس للتكنولوجيا