Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/john-doherty/fetch-reply-with

Unit test fetch requests with ease
https://github.com/john-doherty/fetch-reply-with

fetch fetch-api mock nodejs unit-testing

Last synced: about 3 hours ago
JSON representation

Unit test fetch requests with ease

Awesome Lists containing this project

README

        

# fetch-reply-with

[![npm version](https://badge.fury.io/js/fetch-reply-with.svg)](https://www.npmjs.com/package/fetch-reply-with)
[![Tests](https://github.com/john-doherty/fetch-reply-with/actions/workflows/ci.yml/badge.svg)](https://github.com/john-doherty/fetch-reply-with/actions/workflows/ci.yml)

Simplifies unit tests by intercepting [fetch](https://developers.google.com/web/updates/2015/03/introduction-to-fetch#fetch) requests and returning [mocked](https://en.wikipedia.org/wiki/Mock_object) responses.

## Install

```bash
npm install --save-dev fetch-reply-with
```

## Usage

```js
require('fetch-reply-with'); // <- `fetch` is now globally available

// intercept GET http://orcascan.com and reply with...
fetch('http://orcascan.com', {

// regular fetch option
method: 'GET',

// add reply for this fetch
replyWith: {
status: 200,
body: 'Barcode Scanner app',
headers: {
'Content-Type': 'text/html'
},
delay: 500 // miliseconds to wait before responding (default = 0)
}
});

// execute fetch request
fetch('http://orcascan.com').then(function(res){
return res.text();
})
.then(function(text){
// text === `Barcode Scanner app`
});
```

Couple of things to note:
* Requests not setup with `replyWith` are executed as normal
* A `replyWith` can be modified by redefining the `replyWith`

## Unit Tests

The project includes unit tests, to run the tests:

1. Checkout `git clone https://github.com/john-doherty/fetch-reply-with`
2. Navigate into project folder `cd fetch-reply-with`
3. Install dependencies `npm install`
4. Run the tests `npm test`

## Contributing

1. Fork it!
2. Create your feature branch: `git checkout -b my-new-feature`
3. Commit your changes: `git commit -m 'Add some feature'`
4. Push to the branch: `git push origin my-new-feature`
5. Submit a pull request :)

## Star the repo

If you find this useful please star the repo, it helps us prioritize fixes :raised_hands:

## History

For change-log, check [releases](https://github.com/john-doherty/fetch-reply-with/releases).

## License

Licensed under [MIT License](LICENSE) © [John Doherty](https://twitter.com/mrjohndoherty)