Skip to content

Mock Apollo queries based on operation name (instead of query and variables)

Notifications You must be signed in to change notification settings

lbke/operation-name-mock-link

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Operation Name Mock Link

Differences with default Apollo MockedProvider

MockedProvider has a very strict matching behaviour: your query variables and the mock variables must match EXACTLY, including keys with the value undefined. It makes tests very bristle and leads to the dreaded No more mocked responses for the query: error.

This package uses a lighter approach, mocks are matched only based on the operationName.

Limitation: this might be problematic if a component is triggering multiple queries with the same operationName. But it is fine in most scenarios.

Usage

import { MockedProvider } from "@apollo/client/testing";
import {
  OperationNameMockedResponse,
  OperationNameMockLink,
  
} from "operation-name-mock-link";

interface GetSomeDataResult {
  getSomeData: {
    id: string;
  }
}

const mock: OperationNameMockedResponse<GetSomeDataResult> = {
  request: {
    operationName: "myQuery",
    query: gql`
      query myQuery {
        getSomeData {
          id
        }
      }`
  },
  result: {
    data: {
      getSomeData: {
          id: "42"
      }
    }
  }
};

const wrapper = ({ children }) => (
  <MockedProvider
    // We replace MockedProvider default link with our custom MockLink
    link={new OperationNameMockLink([mock], false)}
  >
    {children}
  </MockedProvider>
);

About

Mock Apollo queries based on operation name (instead of query and variables)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages