Jest.js 测试使用RTK查询API提供的React组件仅支持绝对URL

uubf1zoe  于 2023-03-10  发布在  Jest
关注(0)|答案(1)|浏览(152)

我正在尝试测试使用先前创建的RTK查询API的组件,如下行所示:const { data, isFetching } = useLoadListDataQuery(queryConfig); API是这样创建的:

export const listApi = createApi({
  baseQuery: graphqlRequestBaseQuery({
    url: 'graphql',
  }),
  reducerPath: 'listApi',
  endpoints: (builder) => ({...}),
});

我已经使用MSW模拟了服务器,但是我还没有达到模拟服务器试图回答的程度。下面是我的测试:

describe("List", () => {
  beforeAll(() => {
    server.listen();
  });
  afterEach(() => {
    server.resetHandlers();
  });
  afterAll(() => server.close());

  it('should render successfully', () => {
    const { baseElement } = render(<ApiProvider api={listApi}><SomeComponent/></ApiProvider>);
  });
});

问题是生成获取请求时提供错误:TypeError: Only absolute URLs are supported
我已经尝试过用这种方式设置jest配置环境:

testEnvironmentOptions: {
    url: 'http://someAdress.test/',
  },

而且即使window.location.href像上面那样,错误还是会发生。有没有办法在不改变API的情况下以某种方式注入hostname?

bvuwiixz

bvuwiixz1#

您还必须告诉RTK Query针对该URL发出请求:

baseQuery: graphqlRequestBaseQuery({
    url: 'http://someAdress.test/graphql',
  }),

相关问题