Node TAP
    Preparing search index...

    Module @tapjs/nock - v6.0.2

    @tapjs/nock

    A tap extension that integrates nock.

    • t.nock()
      • automatically calls nock.disableNetConnect()
      • arguments are passed directly to nock, and the result from nock returned
      • asserts all nock scopes created within a test have been consumed
      • cleans only the nock scopes created within the current test, keeping nocks from parent tests
      • if no parent tests have nocks, calls nock.enableNetConnect() in teardown
    • t.nock.snapshot()
      • when snapshots are enabled, sends real requests and records responses to a fixture
      • when snapshots are not enabled, loads fixture data and sets up nock scopes for you

    Load the @tapjs/nock plugin in your tap config.

    For example, in .taprc:

    plugins:
    - @tapjs/nock

    Or in package.json:

    {
    "tap": {
    "plugins": ["@tapjs/nock"]
    }
    }

    Then use it in your tests like so:

    import t from 'tap'

    t.test('sends a request', async t => {
    t.nock('https://registry.npmjs.org')
    .get('/')
    .reply(200, { hello: 'world' })

    const res = await fetch('https://registry.npmjs.org')
    t.equal(res.status, 200)
    const body = await res.json()
    t.same(body, { hello: 'world' })
    })

    // when snapshots are enabled, this test will send a real request
    // and record the response
    // when they are disabled, the recorded response will be
    // automatically loaded into a nock scope, and the test will
    // receive that response
    // This requires that the @tapjs/snapshot plugin is enabled.
    t.test('snapshots a request', async t => {
    t.nock.snapshot()

    const res = await fetch('https://registry.npmjs.org')
    t.equal(res.status, 200)
    const body = await res.json()
    t.match(body, { db_name: 'registry' })
    })

    You may use it directly, though that is a bit more clunky, because it won't be automatically applied to child tests, but it can be good if you only need nock in a small number of tests.

    import { plugin as tapNock } from '@tapjs/nock'
    import t from 'tap'

    t.test('sends a request', async t => {
    const tn = tapNock(t)
    tn.nock('https://registry.npmjs.org')
    .get('/')
    .reply(200, { hello: 'world' })

    const res = await fetch('https://registry.npmjs.org')
    t.equal(res.status, 200)
    const body = await res.json()
    t.same(body, { hello: 'world' })
    })

    // when snapshots are enabled, this test will send a real request
    // and record the response
    // when they are disabled, the recorded response will be
    // automatically loaded into a nock scope, and the test will
    // receive that response
    // This requires that the @tapjs/snapshot plugin is enabled.
    t.test('snapshots a request', async t => {
    const tn = tapNock(t)
    tn.nock.snapshot()

    const res = await fetch('https://registry.npmjs.org')
    t.equal(res.status, 200)
    const body = await res.json()
    t.match(body, { db_name: 'registry' })
    })

    This plugin was originally developed by nlf as the standalone extension @npmcli/tap-nock, and the use case was a major inspiration for tap's plugin eventual architecture.

    Modules

    errors
    index
    recorder