Skip to content

Allow for the easy creation of mocking requests #788

Open
@erunion

Description

Discussed in #544

Originally posted by erunion May 21, 2020
When working with an API, it's helpful to be able to mock out requests when unit testing client functionality. Since we've got the OpenAPI definition on hand for the API in question, we know everything about the API and should be able to accept and return mock data according to the contract.

Nock, the library that we'd likely use for supporting mocks, has an environmental flag that lets you completely disable Nock.

Along these lines, the two ideas that we have for mocking API requests out of SDKs are:

  • Expose an API_MOCKS=true environmental variable that when enabled, causes the SDK to disable network traffic and mock out all requests.
  • Alternatively, if you just want to mock out a single endpoint we should have a .mock() method that you could chain to your API call as such:
const sdk = require('api')('petstore.json');
sdk.mock().listPets().then(res => {
  // `res` is a 200 response and `res.json()` contains mock data based on the API
});

Unanswered questions right now are:

  • How would we mock out failing requests? Would that entail you supplying .mock() with the status code you wish to cause .listPets() to return?

Metadata

Assignees

No one assigned

    Labels

    area:coreIssues related to `core`, which is the package that powers the SDKs at runtimeenhancementNew feature or requestexplorationA tag to show off your experiments

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions