Skip to content

Default Node httpClient configuration does not get mocked by MSW nor upcoming Nock version #2211

Open
@kanadgupta

Description

Describe the bug

Hi there. I'm using nock@beta and it is no longer able to intercept requests from this library when using the default Node.js httpClient settings (i.e., this HTTP client).

This is because nock is adding support for native fetch and now uses @mswjs/interceptors to intercept requests (which is also used by msw).

The workaround is fairly trivial — configure the Stripe SDK to use fetch (see the workaround section here). But once nock@14 is released, it will not support this library without additional end user configuration. Based on a handful of issues in this repo, I cannot imagine this is the desired behavior:

#1844
#1854
#1866

To Reproduce

See https://github.com/kanadgupta/nock-beta-stripe-sdk

Expected behavior

The current Nock beta and its underlying interceptor library (@mswjs/interceptors) should be able to mock requests from the Stripe SDK without having to set the httpClient configuration option.

Code snippets

No response

OS

macOS

Node version

Node v20.16.0

Library version

stripe-node 17.2.1

API version

2024-09-30.acacia

Additional context

I initially filed a bug report in the nock repo: nock/nock#2785

It appears that this is happening due to a known limitation where @mswjs/interceptors is unable to intercept certain requests with node:http. The maintainer documented a way to fix this here: mswjs/msw#2259 (comment)

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions