Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 使用react测试库测试useQuery_Reactjs_React Testing Library_React Query - Fatal编程技术网

Reactjs 使用react测试库测试useQuery

Reactjs 使用react测试库测试useQuery,reactjs,react-testing-library,react-query,Reactjs,React Testing Library,React Query,我正在尝试测试useQuery挂钩。测试(screen.getByText(/Loading…/).not.toBeInTheDocument()除外)似乎失败了。我只是一直在dom中加载文本,而不是标题。虽然已经分配了模拟解决方案/知道为什么会发生这种情况吗?整个目标是测试isLoading和iError。下面是代码 index.js import React from "react"; import ReactDOM from "react-dom";

我正在尝试测试useQuery挂钩。测试(screen.getByText(/Loading…/).not.toBeInTheDocument()除外)似乎失败了。我只是一直在dom中加载文本,而不是标题。虽然已经分配了模拟解决方案/知道为什么会发生这种情况吗?整个目标是测试isLoading和iError。下面是代码

index.js

import React from "react";
import ReactDOM from "react-dom";
import App from "./App";
import { QueryClient, QueryClientProvider } from "react-query";

const queryClient = new QueryClient();

ReactDOM.render(
  <React.StrictMode>
    <QueryClientProvider client={queryClient}>
      <App />
    </QueryClientProvider>
  </React.StrictMode>,
  document.getElementById("root")
);

从“React”导入React;
从“react dom”导入react dom;
从“/App”导入应用程序;
从“react query”导入{QueryClient,QueryClient Provider};
const queryClient=new queryClient();
ReactDOM.render(
,
document.getElementById(“根”)
);
应用程序

import React,{useState,Fragment}来自“React”;
从“react query”导入{useQuery};
从“/api/index”导入{getManagers}”;
从“/components/CustomInputSelect”导入CustomInputSelect;
从“/utils/index”导入{processEmployeeData};
导入“/App.scss”;
常量应用=()=>{
const{isLoading,isError,error,data:employeeData}=useQuery(
“雇员”,
获取管理器
);
const updatedata=processEmployeeData(employeeData);
如果(孤岛加载){
返回装载。。。;
}
如果(isError){
返回错误:{Error.message};
}
返回(
我的头球
我的测试

import React from "react";
import { render, screen, act } from "@testing-library/react";
import "@testing-library/jest-dom/extend-expect";
import { QueryClient, QueryClientProvider } from "react-query";
import App from "./App";
import * as api from "./api/index";

const queryClient = new QueryClient();

const renderComponent = () => {
  render(
    <QueryClientProvider client={queryClient}>
      <App />
    </QueryClientProvider>
  );
};

test("renders CustomSelect component", () => {
  const getManagerFunc = jest
    .spyOn(api, "getManagers")
    .mockResolvedValue({ data: { data: [{ firstName: "John" }] } });
  renderComponent();
  expect(getManagerFunc).toHaveBeenCalledTimes(1);
  expect(screen.getByText(/Loading.../)).not.toBeInTheDocument();
});


从“React”导入React;
从“@testing library/react”导入{render,screen,act}”;
导入“@测试库/jest dom/extend expect”;
从“react query”导入{QueryClient,QueryClient Provider};
从“/App”导入应用程序;
从“/api/index”导入*作为api;
const queryClient=new queryClient();
常量渲染组件=()=>{
渲染(
);
};
测试(“呈现自定义选择组件”,()=>{
const getManagerFunc=jest
.spyOn(api,“GetManager”)
.mockResolvedValue({data:{data:[{firstName:“John”}]});
renderComponent();
期望(getManagerFunc).已被调用的时间(1);
expect(screen.getByText(/Loading…/).not.toBeInTheDocument();
});

我可能正好有适合您的文章:
import React from "react";
import { render, screen, act } from "@testing-library/react";
import "@testing-library/jest-dom/extend-expect";
import { QueryClient, QueryClientProvider } from "react-query";
import App from "./App";
import * as api from "./api/index";

const queryClient = new QueryClient();

const renderComponent = () => {
  render(
    <QueryClientProvider client={queryClient}>
      <App />
    </QueryClientProvider>
  );
};

test("renders CustomSelect component", () => {
  const getManagerFunc = jest
    .spyOn(api, "getManagers")
    .mockResolvedValue({ data: { data: [{ firstName: "John" }] } });
  renderComponent();
  expect(getManagerFunc).toHaveBeenCalledTimes(1);
  expect(screen.getByText(/Loading.../)).not.toBeInTheDocument();
});