Coder Social home page Coder Social logo

inblack67 / use-mock-service-worker Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 1.95 MB

No need to mock Axios or Fetch while writing Ajax Calls' tests anymore.

Home Page: https://www.npmjs.com/package/use-mock-service-worker

License: MIT License

TypeScript 100.00%
mock-service-worker jest react-testing-library npm

use-mock-service-worker's Introduction

use-mock-service-worker

  • Don't mock fetch or axios.

  • use-mock-service-worker is a testing hook which consumes Mock Service Worker API and takes care of all the configuration we have to do while testing ajax calls via mocking the service worker.

  • use-mock-service-worker only plays along with GET requests, one at a time.

  • Whenever we make a http request, use-mock-service-worker intercepts that request before it goes out to internet and then responds with whatever our API's expected response is. This way we can test Ajax calls without making an external http request.

  • See fully working example.

Installation

yarn add -D use-mock-service-worker

or

npm i -D use-mock-service-worker

Usage

// index.test.js

import { loadTestServer } from 'use-mock-service-worker'

// our actual Ajax call method
import fetchData from '../src/fetchData'

// target API
const url = 'https://jsonplaceholder.typicode.com/posts';

// expected response from the API
const dataExpected = [
  {
    "userId": 1,
    "id": 1,
    "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
    "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
  },
];

// loadTestServer returns the server created my msw (mock service worker)
const server = loadTestServer(url, dataExpected);

// making sure our server starts before out tests and closes after them too
beforeAll(() => server.listen());
afterAll(() => server.close());
beforeAll(() => server.resetHandlers());


describe('useMockServiceWorker', () => {

  it('hook is available', () => {
    expect(loadTestServer).toBeDefined();
  });

  it('GET Data ', async () => {
    // making actual request via our fetchData method
    const res = await fetchData(url);
    // but the request will be intercepted by use-mocker-service-worker and won't go out in the internet world.

    // and they must pass!
    expect(res.data[0].userId).toEqual(1);
    expect(res.data[0].id).toEqual(1);
    expect(res.data[0].title).toEqual("sunt aut facere repellat provident occaecati excepturi optio reprehenderit");
  });
});

Repository

Explore

About The Author

Website

Github

use-mock-service-worker's People

Contributors

devproddeploy avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.