How to override url for RTK query

Viewed 25

I'm writing pact integration tests which require to perform actual call to specific mock server during running tests. I found that I cannot find a way to change RTK query baseUrl after initialisation of api.

it('works with rtk', async () => {
    // ... setup pact expectations
    
    const reducer = {
      [rtkApi.reducerPath]: rtkApi.reducer,
    };

    // proxy call to configureStore()
    const { store } = setupStoreAndPersistor({
      enableLog: true,
      rootReducer: reducer,
      isProduction: false,
    });
    
    // eslint-disable-next-line @typescript-eslint/no-explicit-any
    const dispatch = store.dispatch as any;

    dispatch(rtkApi.endpoints.GetModules.initiate();

    // sleep for 1 second
    await new Promise((resolve) => setTimeout(resolve, 1000));
    const data = store.getState().api;

    expect(data.queries['GetModules(undefined)']).toEqual({modules: []});
  });

Base api

import { createApi } from '@reduxjs/toolkit/query/react';
import { graphqlRequestBaseQuery } from '@rtk-query/graphql-request-base-query';
import { GraphQLClient } from 'graphql-request';

export const client = new GraphQLClient('http://localhost:12355/graphql');

export const api = createApi({
  baseQuery: graphqlRequestBaseQuery({ client }),
  endpoints: () => ({}),
});

query is very basic

query GetModules {
  modules {
    name
  }
}

I tried digging into customizing baseQuery but were not able to get it working.

0 Answers
Related