Git Product home page Git Product logo

mocha-chai-snapshot's Introduction

mocha-chai-snapshot

Hook for chai to generate and matche snapshot in testing node application just like in jest

Getting Started

Install mocha-chai-snapshot using npm:

npm install --save-dev mocha-chai-snapshot

Example Useage

// first.spec.js  => The first file test-runner executes or add these below lines at the top of every spec file
const chai = require('chai');
const chaiSnapshot = require('mocha-chai-snapshot');
const { expect } = chai;
chai.use(chaiSnapshot);


//component.spec.js
describe("GET /hello", () =>{
    it("Should say Hello to Starnger", () => {
        return request(app)
        .get('/hello')
        .set('Accept', 'application/json')
        .expect('Content-Type', /json/)
        .expect(200)
        .then(({ body }) => {
            expect(body).to.matchSnapshot(this);
        });
    });

    it("Should say Hello to Jhon", () => {
        return request(app)
        .get('/hello')
        .query({ name: 'Jhon' })
        .set('Accept', 'application/json')
        .expect('Content-Type', /json/)
        .expect(200)
        .then(({ body }) => {
            expect(body).to.matchSnapshot(this);
        });
    });
});

It will automatically create(if CHAI_SNAPSHOT_UPDATE environment variable to true) __snapshots__ folder in same folder of specs and snapshot file like below

exports[`GET /hello : Should say Hello to Starnger 1`] = "Hello, stranger!";
exports[`GET /hello : Should say Hello to Jhon 1`] = {
  "name": "Jhon",
  "say": "Hello"
};

If the found snapshot does not match with the actuals and you want to update the related snapshots, use isForced in expect chain.

Example Useage

// first.spec.js  => The first file testrunner executes or add these below lines at the top of every spec file
const chaiSnapshot =require('mocha-chai-snapshot');

chai.use(chaiSnapshot);


//component.spec.js
it("Should say Hello", () => {
    return request(app)
      .get('/hello')
      .query({ name: 'Jack' })
      .set('Accept', 'application/json')
      .expect('Content-Type', /json/)
      .expect(200)
      .then(({ body }) => {
        expect(body).isForced.to.matchSnapshot(this);
      });
});

Or

Set CHAI_SNAPSHOT_UPDATE = true to update the snapshots if there is any mismatch in any of the spec files even if isForced is not used.

Warning!: Do not set CHAI_SNAPSHOT_UPDATE = true in build pipeline. If it is set, build will never fail even if there is no snapshots available in the __snapshots__ folder.

Notes: It is tested in mocha v5.2.0 and chai v4.2.0.

mocha-chai-snapshot's People

Contributors

vedi avatar

Watchers

James Cloos avatar  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.