0.3.9 • Published 4 years ago

nock-record v0.3.9

Weekly downloads
3,669
License
MIT
Repository
github
Last release
4 years ago

Small wrapper around Nock Back, with improved ergonomics.

CircleCI

:heavy_check_mark: Testing framework agnostic\ :heavy_check_mark: Types included\ :heavy_check_mark: 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

Installation

Make sure to install nock as well, as it's defined as a peer-dependency:

# yarn
yarn add nock-record nock -D

# npm
npm install nock-record nock -D

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

optiondefaultdescription
fixturePath{test-directory}/__nock-fixtures__The directory where fixtures will be stored
moderecord"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

propertytypedescription
completeRecording() => voidTells Nock to complete the recording and write any fixtures
assertScopesFinished() => voidAsserts whether all recorded scopes have finish
scopesNock.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
0.3.9

4 years ago

0.3.8

4 years ago

0.3.7

4 years ago

0.3.6

4 years ago

0.3.5

4 years ago

0.3.4

4 years ago

0.3.3

6 years ago

0.3.1

6 years ago

0.3.0

6 years ago

0.2.5

6 years ago