Diese Bibliothek ist eine Nachbildung von XMLHttpRequest
und bietet eine einfache Schnittstelle zum Simulieren von Interaktionen mit XMLHttpRequest
. Es ist ein direkter Ersatz für XMLHttpRequest
für Ihre Tests.
Diese Bibliothek implementiert die XMLHttpRequest
Schnittstelle und verarbeitet Anforderungen und Ereignisse gemäß der XMLHTTPRequest-Spezifikation, ohne echte Netzwerkanforderungen zu verwenden. Sie können auf die Scheinanfragen auf drei Arten antworten:
Mit den Scheinantwortmethoden können Sie Antworten, Upload-Fortschritt, Fehler und andere Interaktionen simulieren. Diese verarbeiten automatisch die Verarbeitung auf niedrigerer Ebene, z. B. das Ausgeben von Ereignissen und das Ändern der readystate
-Eigenschaft von XMLHttpRequest
.
MockXhr
-Anfragentimeout
Attribut und die Anforderungs-TimeoutsMockXhr
Lebenszyklus-HooksMockXhrServer
-KlasseMockXhrServer
-SetupMockXhr
KlasseMockXhr
Lebenszyklus-HooksMockXhrRequest
-KlassenewMockXhr()
newServer()
XMLHttpRequest
Funktionenüber npm (Node Package Manager)
$ 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 ( ) ;
}
} ) ;
Die XMLHttpRequest
Mock-Klasse ist MockXhr
. Es stellt dieselbe Schnittstelle wie XMLHttpRequest
bereit und ist ein direkter Ersatz für Testcode, der XMLHttpRequest
verwendet.
Es gibt zwei Möglichkeiten, das Verhalten von MockXhr
-Instanzen zu steuern:
XMLHttpRequest
Lebenszyklus-Hooks. Verwenden Sie dies, wenn Sie mehr Kontrolle über Anfragen ohne die vom Mock-Server bereitgestellten Funktionen benötigen. Die MockXhrServer
-Klasse implementiert den Mock-Server. Sie erstellen einen MockXhrServer
mit newServer
. Der MockXhrServer
antwortet automatisch auf MockXhr
-Anfragen und erleichtert das Schreiben von Tests.
Die Grundstruktur von Tests, die MockXhrServer
verwenden, ist:
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 ( ) ;
}
Es gibt zwei Ansätze, damit Ihr Code die MockXhr
-Klasse als Ersatz für XMLHttpRequest
verwendet. Dadurch kann der MockXhrServer
auf Anfragen reagieren:
install()
um die XMLHttpRequest
-Klasse global durch die MockXhr
-Klasse des Servers zu ersetzen. Rufen Sie am Ende des Testfalls remove()
auf, um den ursprünglichen Zustand wiederherzustellen.XMLHttpRequest
erstellt werden, verwenden Sie die MockXhr
Klasse direkt mit einer der folgenden MockXhrServer
-Eigenschaften:xhrFactory
ist eine Funktion, die eine MockXhr
-Instanz erstellt.MockXhr
ist die Klasse der von xhrFactory
erstellten Instanzen. Dieser Code demonstriert die Verwendung von 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 ;
}
Routen definieren, wie der MockXhrServer
auf MockXhr
-Anfragen reagiert. Diese bestehen aus drei Teilen:
Wenn Sie eine MockXhr
Anfrage senden, findet der MockXhrServer
die erste Route, die der Methode und URL der Anfrage entspricht. Anschließend antwortet es mit dem Anforderungshandler der Route. Sie können auch einen Standard-Anfrage-Handler festlegen. Anforderungshandler werden entweder deklarativ oder programmgesteuert definiert.
Wenn timeout
Attribut einer Anfrage auf einen Wert ungleich Null gesetzt ist und MockXhrServer
nicht auf die Anfrage antwortet, kommt es standardmäßig zu einer Zeitüberschreitung.
Es gibt zwei Möglichkeiten, Routen zum MockXhrServer
hinzuzufügen:
routes
des newServer
.MockXhrServer
-Methoden, die Routen hinzufügen. Der MockXhrServer
zeichnet alle MockXhr
-Anfragen, die er erhält, in einem Anfrageprotokoll auf. Verwenden Sie dies, um die XMLHttpRequest
Anfragen zu validieren, die Ihr Code sendet.
Der MockXhrServer
kann Fortschrittsereignisse für Anfragen (Upload) und Antworten (Download) automatisch generieren. Dies ist standardmäßig deaktiviert. Verwenden Sie das Feld progressRate
um dies zu aktivieren.
Sie können Fortschrittsereignisse auch generieren, wenn Sie programmgesteuert mit einem Anforderungshandler vom Typ Function
auf MockXhr
-Anfragen antworten.
Antworten auf MockXhr
-Anfragen sind asynchron. Dies reproduziert, wie eine echte XMLHttpRequest
-Anfrage funktioniert. Daher müssen Sie höchstwahrscheinlich die asynchrone Testunterstützung Ihres Testframeworks nutzen. Die relevante Dokumentation zum Mocha-Testframework finden Sie beispielsweise hier.
Der onSend
Lebenszyklus-Hook ist erforderlich, um auf MockXhr
-Anfragen zu reagieren. Der Mock-Server erledigt dies automatisch. Die andere Möglichkeit besteht darin, die MockXhr
Lebenszyklus-Hooks direkt zu verwenden. In beiden Fällen wird der onSend
Lebenszyklus-Hook ausgeführt, nachdem der Ausführungskontext, der XMLHttpRequest.send()
aufruft, abgeschlossen oder gelöscht wurde. Intern verwendet diese Bibliothek ein sofort aufgelöstes Promise
, um einen leeren Callstack zu erhalten.
MockXhr
-Anfragen Es gibt mehrere MockXhr
-Methoden und -Eigenschaften, um auf Anfragen zu reagieren. Diese Methoden ermöglichen die folgenden Interaktionen:
Weitere Informationen finden Sie im Abschnitt Scheinantwortmethoden.
timeout
Attribut und die Anforderungs-Timeouts Wenn Sie das timeout
Attribut von XMLHttpRequest
in Ihrem Code festlegen, werden MockXhr
-Anfragen standardmäßig nach der angegebenen Verzögerung automatisch abgelaufen. Dadurch wird das timeout
-Ereignis ausgegeben und die Anforderung wie in der Spezifikation beschrieben abgebrochen.
Wenn Sie sich auf den Zeitablauf verlassen, um zu testen, wie Ihr Code mit Zeitüberschreitungen umgeht, werden Tests im Allgemeinen spröde und schwer zu debuggen. Sie können Timeouts stattdessen programmgesteuert mit setRequestTimeout()
auslösen.
Deaktivieren Sie automatische Zeitüberschreitungen bei Anfragen mit einer dieser Optionen:
disableTimeout()
auf einem MockXhrServer
auf. Dies betrifft alle MockXhr
-Instanzen, die es verarbeitet.MockXhr.timeoutEnabled = false
. Diese statische Eigenschaft der MockXhr
-Klasse wirkt sich auf jede ihrer Instanzen aus.timeoutEnabled
auf einer MockXhr
-Instanz auf false
. Dies betrifft nur diese Instanz.MockXhr
Lebenszyklus-Hooks Dies ist ein alternatives Nutzungsmuster, das den MockXhrServer
nicht verwendet. Stattdessen verwenden Sie direkt die MockXhr
Lebenszyklus-Hooks. Dies erfordert mehr Code, aber Sie haben mehr Kontrolle über MockXhr
Anfragen.
Beachten Sie, dass Sie die MockXhr
Lebenszyklus-Hooks auch zusammen mit MockXhrServer
verwenden können, wenn Sie nur den Mock-Server erweitern müssen.
Beispiel:
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
-Klasse Diese Klasse ist ein Scheinserver, der auf MockXhr
-Anfragen basierend auf ihrer URL und Methode antwortet.
MockXhrServer
-Setup MockXhrServer(routes)
Argumente:
routes
: Objekt mit dem anfänglichen Routensatz des Servers. (optional) In den meisten Fällen sollten Sie newServer
anstelle dieses Konstruktors direkt verwenden.
Die Schlüssel des routes
sind HTTP-Methoden. Die Werte sind Arrays mit zwei Elementen: [url_matcher, request_handler]
.
Siehe auch Request-URL-Matcher und Request-Handler.
Beispiel:
const handlerFn = ( request ) => { request . respond ( ) ; } ;
newServer ( {
get : [ '/get' , { status : 200 } ] ,
'my-method' : [ '/my-method' , { status : 201 } ] ,
post : [ '/post' , [ handlerFn , { status : 404 } ] ] ,
} ) ;
install(context = globalThis)
Argumente:
context
: Wenn Sie einen Wert angeben, legt die install
die XMLHttpRequest
Eigenschaft in diesem Kontext statt im globalen Kontext fest. (optional) Installiert den MockXhr
-Mock des Servers im globalen Kontext, um die XMLHttpRequest
Klasse zu ersetzen. Mit „remove()“ wiederherstellen.
remove()
Macht die von install() vorgenommenen Änderungen rückgängig. Rufen Sie dies nach Ihren Tests auf.
progressRate
Wenn Sie progressRate
auf eine number
größer als 0 festlegen, generiert der Server automatisch Anforderungs- (Upload) und Antwort-Fortschrittsereignisse (Download). Jedes Fortschrittsereignis erhöht sich um progressRate
Bytes.
progressRate
gilt nur für Anforderungshandler vom Typ object
.
disableTimeout()
und enableTimeout()
Diese Methoden deaktivieren oder aktivieren die Auswirkungen des timeout
Attributs von MockXhr
. Siehe „Das timeout
Attribut und Anforderungs-Timeouts“.
Routen konfigurieren, wie der Server auf MockXhr
-Anfragen reagiert. Ihre drei Teile werden im Folgenden beschrieben.
Das Routenkonzept basiert lose auf dem Express-Framework.
Jede string
mit einer gültigen HTTP-Anforderungsmethode ist zulässig. Zu den gültigen Methoden gehören Standardmethoden wie GET
, POST
, PUT
und DELETE
sowie andere Methodennamen. Bei den Standardmethodennamen wird die Groß-/Kleinschreibung nicht beachtet.
Der Anforderungs-URL-Matcher kann einer dieser Typen sein:
string
(z. B. '/my-url'
), die genau mit der URL der Anfrage übereinstimmt.RegExp
der mit der URL der Anfrage übereinstimmt.Function
, die true
zurückgibt, wenn die URL der Anfrage übereinstimmt. Die Funktion erhält die URL als Argument. Der Anforderungshandler kann einer dieser Typen sein:
Ein object
mit den Antworteigenschaften. Die Standardwerte sind:
{ status: 200, headers: {}, body: null, statusText: 'OK' }
Eine Function
, die die Scheinantwortmethoden direkt aufruft. Als Argument erhält die Funktion eine MockXhrRequest
Instanz.
Eine string
mit dem Wert 'error'
oder 'timeout'
. Dies löst entweder einen Fehler oder eine Zeitüberschreitung aus.
Ein Array der anderen oben genannten Anforderungshandlertypen. Die erste Anfrage erhält den ersten Handler, die zweite den zweiten Handler und so weiter. Der letzte Handler wird wiederverwendet, wenn im Array keine weiteren Handler vorhanden sind.
Bei object
fügt der Server automatisch den Content-Length
-Antwortheader mit der Länge des Antworttexts hinzu.
Alle diese Handler sind gleichwertig:
const handlerObj = { } ;
const handlerFn = ( request ) => { request . respond ( 200 , { 'Content-Length' : '0' } ) ; } ;
const handlerArray = [ { } ] ;
get(urlMatcher, handler)
Argumente:
urlMatcher
: URL-Matcher anfordern.handler
: Anforderungshandler. Fügt eine Route für die GET
HTTP-Methode hinzu.
post(urlMatcher, handler)
Argumente:
urlMatcher
: URL-Matcher anfordern.handler
: Anforderungshandler. Fügt eine Route für die POST
HTTP-Methode hinzu.
put(urlMatcher, handler)
Argumente:
urlMatcher
: URL-Matcher anfordern.handler
: Anforderungshandler. Fügt eine Route für die HTTP-Methode PUT
hinzu.
delete(urlMatcher, handler)
Argumente:
urlMatcher
: URL-Matcher anfordern.handler
: Anforderungshandler. Fügt eine Route für die DELETE
-HTTP-Methode hinzu.
addHandler(method, urlMatcher, handler)
Argumente:
method
: HTTP-Methode als string
.urlMatcher
: URL-Matcher anfordern.handler
: Anforderungshandler. Fügt eine Route für die method
HTTP-Methode hinzu.
setDefaultHandler(handler)
Argumente:
handler
: Anforderungshandler.Legt einen Standard-Anfragehandler für Anfragen fest, die keiner Route entsprechen.
setDefault404()
Legt einen Standard-Anfragehandler fest, der 404-Antworten zurückgibt.
xhrFactory
Funktion, die eine neue MockXhr
Instanz zurückgibt.
MockXhr
Die MockXhr
-Klasse, in die sich der Server einklinkt. xhrFactory
erstellt Instanzen dieser Klasse.
getRequestLog()
Gibt ein Array aller bisher vom Server empfangenen Anfragen zurück. Jeder Aufruf gibt ein neues Array zurück. Jedes Array-Element ist ein Objekt mit diesen Eigenschaften:
method
: HTTP- string
.url
: URL- string
.body
: Anfragetextheaders
: Header als Objekt anfordern. Die Header-Namen sind in Kleinbuchstaben geschrieben.MockXhr
Klasse Diese Klasse ist eine Nachbildung von XMLHttpRequest
. In diesem Abschnitt werden die Methoden und Eigenschaften dokumentiert, die nicht in der Spezifikation enthalten sind.
MockXhr.timeoutEnabled
Diese statische boolean
Eigenschaft steuert die automatische Zeitüberschreitung von Anforderungen aller Instanzen der Klasse.
timeoutEnabled
Diese boolean
Eigenschaft steuert die automatische Zeitüberschreitung dieser MockXhr
-Instanz.
getResponseHeadersHash()
Gibt alle Antwortheader als Objekt zurück. Die Header-Namen sind in Kleinbuchstaben geschrieben.
MockXhr
Lebenszyklus-Hooks Sie können an diesen Stellen Rückrufmethoden für die MockXhr
Lebenszyklus-Hooks definieren:
MockXhr
-Klasse. Der Hook gilt für alle Instanzen von MockXhr
und seinen Unterklassen.MockXhr
Unterklasse, die von MockXhrServer.MockXhr
oder newMockXhr()
zurückgegeben wird. Der Hook gilt für alle Instanzen dieser Klasse.MockXhr
. Der Hook gilt nur für diese Instanz.Wenn Sie mehrere Hooks für ein Lebenszyklusereignis definieren, werden diese in der oben genannten Reihenfolge aufgerufen.
Im Allgemeinen sollten Sie die dritte Option bevorzugen, die die Isolierung Ihrer Testfälle erleichtert.
onCreate
Rückrufmethode, die diese Argumente empfängt:
xhr
: Neue MockXhr
Instanz. Verwenden Sie diesen Lebenszyklus-Hook, um Instanzen von MockXhr
abzufangen, wenn sie erstellt werden.
Wird aufgerufen, wenn eine Instanz von MockXhr
am Ende ihres Konstruktors erstellt wird. Dieser Lifecycle-Hook ist daher nur als statische Eigenschaft verfügbar.
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
Rückrufmethode, die diese Argumente empfängt:
request
: MockXhrRequest
für die Anfrage.xhr
: Die MockXhr
Instanz.Verwenden Sie diesen Lebenszyklus-Hook, um mit den Scheinantwortmethoden auf eine Anfrage zu antworten.
Wird nach jedem Aufruf von send()
asynchron aufgerufen. Jeder Aufruf von send()
generiert einen Aufruf von onSend
mit einer separaten Instanz von 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
-Klasse Jeder Aufruf von send()
erstellt eine MockXhrRequest
, die Informationen über die XMLHttpRequest
enthält und Methoden für die programmgesteuerte Reaktion bereitstellt.
requestHeaders
Ein HeadersContainer
, der eine Kopie der Header der Anfrage enthält.
method
Eine string
mit der HTTP-Methode der Anfrage.
url
Eine string
mit der URL der Anfrage.
body
Der Text der Anfrage.
withCredentials
Ein boolean
mit dem withCredentials
-Wert der Anforderung.
getRequestBodySize()
number
der Bytes im Anfragetext.
Hinweis: Dies ist nicht ganz korrekt, wenn der body
ein multipart/form-data
codierter FormData
ist. Header, Codierung und andere Faktoren, die zur tatsächlichen body
eines nicht simulierten XMLHttpRequest
beitragen, werden nicht berücksichtigt. Mit dieser Methode können Sie einen Mindestwert für die tatsächliche body
der Anfrage ermitteln. Dies ist nützlich, um Upload-Fortschrittsereignisse zu simulieren.
Diese Methoden stellen eine programmgesteuerte Schnittstelle zur Beantwortung von MockXhr
Anfragen bereit.
Wenn ein Aufruf einer Antwortmethode ungültig ist, wird ein Error
mit der Meldung "Mock usage error detected"
ausgegeben.
uploadProgress(transmitted)
Argumente:
transmitted
: number
der übertragenen Bytes.Löst einen Fortschritt beim Hochladen einer Anfrage aus.
Sie können dies nur aufrufen, wenn der body
der Anfrage nicht null
ist und der Upload nicht abgeschlossen ist.
Nachdem Sie diese Methode aufgerufen haben, können Sie jede andere Scheinantwortmethode verwenden.
respond(status = 200, headers = {}, body = null, statusText = 'OK')
Argumente:
status
: HTTP- number
der Antwort. (optional)headers
: object
mit den Antwortheadern. (optional)body
: Antworttext. (optional)statusText
: string
-Antwort-HTTP-Statustext. (optional) Vollständige Antwortmethode, die sowohl die Antwortheader als auch den Antworttext festlegt. Ändert den readyState
der Anfrage in DONE
.
Löst die entsprechenden Ereignisse wie readystatechange
, progress
und load
aus.
Dies ist eine Abkürzung für setResponseHeaders()
gefolgt von setResponseBody()
.
Nachdem Sie diese Methode aufgerufen haben, können Sie keine anderen Scheinantwortmethoden mehr verwenden. Diese Einschränkung wird aufgehoben, wenn Sie open()
erneut aufrufen.
setResponseHeaders(status = 200, headers = {}, statusText = 'OK')
Argumente:
status
: HTTP- number
der Antwort. (optional)headers
: object
mit den Antwortheadern. (optional)statusText
: string
-Antwort-HTTP-Statustext. (optional) Legt die Antwortheader fest. Ändert den readyState
der Anfrage in HEADERS_RECEIVED
.
Löst die entsprechenden Ereignisse wie readystatechange
, progress
und load
aus.
Nachdem Sie diese Methode aufgerufen haben, können Sie die folgenden Scheinantwortmethoden verwenden:
downloadProgress()
setResponseBody()
setNetworkError()
setRequestTimeout()
. downloadProgress(transmitted, length)
Argumente:
transmitted
: number
der übertragenen Bytes.length
: number
der Bytes in der Antwort. Löst ein Antwortfortschrittsereignis aus. Ändert den readyState
der Anfrage in LOADING
wenn sie HEADERS_RECEIVED
ist.
Sie müssen setResponseHeaders()
vor dieser Methode aufrufen.
setResponseBody(body = null)
Argumente:
body
: Antworttext. (optional) Legt den Antworttext fest. Ändert den readyState
der Anfrage in DONE
.
Löst die entsprechenden Ereignisse wie readystatechange
, progress
und load
aus.
Ruft setResponseHeaders()
auf, falls nicht bereits aufgerufen. Die Antwortheader enthalten dann nur Content-Length
mit einem Wert, der der Länge des Antworttextes entspricht.
Nachdem Sie diese Methode aufgerufen haben, können Sie keine anderen Scheinantwortmethoden mehr verwenden. Diese Einschränkung wird aufgehoben, wenn Sie open()
erneut aufrufen.
setNetworkError()
Simuliert einen Netzwerkfehler. Ändert den readyState
der Anfrage in DONE
.
Löst die entsprechenden Ereignisse aus, einschließlich des error
.
Nachdem Sie diese Methode aufgerufen haben, können Sie keine anderen Scheinantwortmethoden mehr verwenden. Diese Einschränkung wird aufgehoben, wenn Sie open()
erneut aufrufen.
setRequestTimeout()
Simuliert ein Anforderungszeitlimit. Ändert den readyState
der Anfrage in DONE
.
Löst die entsprechenden Ereignisse aus, einschließlich des timeout
Ereignisses.
Löst einen Fehler aus, wenn das request
gleich 0 ist, da in diesem Fall keine Zeitüberschreitungen auftreten.
Nachdem Sie diese Methode aufgerufen haben, können Sie keine anderen Scheinantwortmethoden mehr verwenden. Diese Einschränkung wird aufgehoben, wenn Sie open()
erneut aufrufen.
newMockXhr()
Gibt eine neue MockXhr
Unterklasse zurück.
Wenn Sie in jedem Testfall eine andere Unterklasse von MockXhr
verwenden, ist es einfacher sicherzustellen, dass sie in sich geschlossen sind. Wenn Sie beispielsweise die statische Eigenschaft timeoutEnabled
für eine Unterklasse festlegen, wirkt sich dies nur auf diese Unterklasse aus und nicht auf die anderen Unterklassen, die in anderen Testfällen erstellt wurden. Da Unterklassen nicht wiederverwendet werden, ist kein Bereinigungscode erforderlich, der die an einer Unterklasse vorgenommenen Änderungen rückgängig macht.
newServer(routes)
Argumente:
routes
: Objekt mit dem anfänglichen Routensatz des Servers. (optional) Gibt einen neuen MockXhrServer
mit seiner eigenen eindeutigen MockXhr
Unterklasse zurück. Siehe newMockXhr()
.
Fügen Sie Routen zum MockXhrServer
mit dem optionalen routes
hinzu. Einzelheiten finden Sie im Konstruktor.
XMLHttpRequest
FunktionenBasierend auf der XMLHTTPRequest-Spezifikationsversion „15. August 2022“.
open()
, setRequestHeader()
, send()
und abort()
.statusText
, Header und Text.timeout
Attribut (kann deaktiviert werden).MockXhr.setNetworkError()
).MockXhr.setRequestTimeout()
).overrideMimeType()
löst bei Bedarf aus, hat aber keine andere Auswirkung.responseType
: ''
, 'text'
und 'json'
werden vollständig unterstützt. Die responseType
Werte haben keine Auswirkung auf den an setResponseBody()
übergebenen Antworttext.responseXml
: Der Antworttext wird nicht in eine Dokumentantwort konvertiert. Um eine Dokumentantwort zu erhalten, übergeben Sie diese direkt als Antworttext in setResponseBody()
.responseUrl
: Die endgültige Anforderungs-URL nach Weiterleitungen wird nicht automatisch festgelegt. Dies kann in einem Request-Handler emuliert werden.async
in open()
auf false
gesetzt).open()
und Auslösen von SyntaxError
bei Fehler. Mitwirkende sind willkommen! Weitere Informationen finden Sie in diesem Leitfaden.
MIT