هذه المكتبة عبارة عن نسخة وهمية من XMLHttpRequest التي توفر واجهة بسيطة لمحاكاة التفاعلات مع XMLHttpRequest . إنه بديل مباشر لـ XMLHttpRequest لاختباراتك.
تطبق هذه المكتبة واجهة XMLHttpRequest وتتعامل مع الطلبات والأحداث كما هو محدد في مواصفات XMLHTTPRequest دون استخدام طلبات الشبكة الحقيقية. يمكنك الرد على الطلبات الوهمية بثلاث طرق:
يمكنك محاكاة الاستجابات وتقدم التحميل والأخطاء والتفاعلات الأخرى باستخدام طرق الاستجابة الوهمية. تتعامل هذه العناصر تلقائيًا مع المعالجة ذات المستوى الأدنى مثل إرسال الأحداث وتغيير خاصية readystate لـ XMLHttpRequest .
MockXhr برمجياًtimeout ومهلات الطلبMockXhrMockXhrServerMockXhrServerMockXhrMockXhrMockXhrRequestnewMockXhr()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 عند الفشل. المساهمين هي موضع ترحيب! انظر هذا الدليل لمزيد من المعلومات.
معهد ماساتشوستس للتكنولوجيا