Skip to content
This repository has been archived by the owner on May 8, 2020. It is now read-only.

A fake XMLHttpRequest object for testing in browsers

License

Notifications You must be signed in to change notification settings

FrontendMasters/FakeXMLHttpRequest

 
 

Repository files navigation

NOTE: This fork fixes 2 inconsistencies between faked XHRs and real ones.

  1. readystatechange doesn't include event.target as a real event would. Fixed in this PR: pretenderjs#34
  2. responseType:"json" doesn'>t set parsed json at xhr.response. Fixed in this PR: pretenderjs#32

These fixes allow Mirage.js to work with Mithril's m.request.

FakeXMLHttpRequest Build Status

This library provide a fake XMLHttpRequest object for testing browser-based libraries. It is partially extracted (and in many places simplified) from Sinon.JS and attempts to match the behavior of XMLHttpRequest specification.

Why not just use Sinon.JS?

Sinon includes much more than just a fake XHR object which is useful in situations where you may not need mocks, spies, stubs, or fake servers.

How to use it

In addition to matching the native XMLHttpRequest's API, FakeXMLHttpRequest adds a respond function that takes three arguments: a HTTP response status number, a headers object, and a text response body:

// simulate successful response
import FakeXMLHttpRequest from "fake-xml-http-request";

let xhr = new FakeXMLHttpRequest();
xhr.respond(200, { "Content-Type": "application/json" }, '{"key":"value"}');
xhr.status; // 200
xhr.statusText; // "OK"
xhr.responseText; // '{"key":"value"}'

// simulate failed response
xhr = new FakeXMLHttpRequest();
xhr.abort();

There is no mechanism for swapping the native XMLHttpRequest or for recording, finding, or playing back requests. Libraries using FakeXMLHttpRequest should provide this behavior.

Testing

Tests are written in QUnit and run through the Karma test runner.

Run with:

karma start

Code of Conduct

In order to have a more open and welcoming community this project adheres to a code of conduct adapted from the contributor covenant.

Please adhere to this code of conduct in any interactions you have with this project's community. If you encounter someone violating these terms, please let a maintainer (@trek) know and we will address it as soon as possible.

About

A fake XMLHttpRequest object for testing in browsers

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%