Giter Site home page Giter Site logo

nock-record's Introduction

Small wrapper around Nock Back, with improved ergonomics.

CircleCI

✔️ Testing framework agnostic
✔️ Types included
✔️ Works with promises (so enables async/await)

Workflow

If you're familiar with Jest Snapshots, the following workflow should feel familiar.

  1. Record actual HTTP requests on first-time test run
  2. Request + response are written to a file
  3. A nock will be created on subsequent test runs, based on the previous recording

Usage gif

Usage

import { setupRecorder } from "nock-record";
import { getGithubProfile } from "./githubProfile";

const record = setupRecorder();

describe("#getGithubProfile", () => {
  it("should retrieve user info", async () => {
    // Start recording, specify fixture name
    const { completeRecording, assertScopesFinished } = await record("github-edorivai");

    // Run your function under test
    const result = await getGithubProfile("edorivai");

    // Complete the recording, allow for Nock to write fixtures
    completeRecording();
    // Optional; assert that all recorded fixtures have been called
    assertScopesFinished();

    // Perform your own assertions
    expect(result).toMatchSnapshot();
  });
});

API

setupRecorder

Sets up your recorder

// Signature:
function setupRecorder(options?: RecorderOptions): Record;

// Usage:
const record = setupRecorder({ mode: 'record' });

Recorder Options

option default description
fixturePath {test-directory}/__nock-fixtures__ The directory where fixtures will be stored
mode record "wild" | "dryrun" | "record" | "lockdown" See official docs for details

record

Starts recording HTTP requests

// Signature:
function record(fixtureName: string, options: nock.NockBackOptions = {}): Promise<Recording>;

// Usage:
const recording = await record("your-fixture-name");

Recording

Returned from a call to record

property type description
completeRecording () => void Tells Nock to complete the recording and write any fixtures
assertScopesFinished () => void Asserts whether all recorded scopes have finish
scopes Nock.Scope[] All Nock Scopes associated with this recording

Usage:

const { completeRecording, assertScopesFinished } = await record("your-fixture-name");

await yourFunctionThatSendsRequests();

completeRecording();
assertScopesFinished();

Running the example

Clone this repo, then run:

npm install
npm run build
npm run test-examples

nock-record's People

Contributors

edorivai avatar dependabot[bot] avatar alextes avatar mpalmerlee avatar

Watchers

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