相关疑难解决方法(0)

无法读取未定义的 react-testing-library 的属性“addListener”

我正在尝试使用react testing library测试我的antd应用程序,但我不断收到此错误:

类型错误:无法读取未定义的属性“addListener”

我使用自定义渲染,但错误似乎来自“渲染”方法。

const customRender = (ui, options) => render(ui, { wrapper: TestingWrapper, ...options }) ^

我什至使用相同版本的 react 和 react-dom(这似乎是 rtl 的常见问题)。

“反应”:“17.0.1”,“反应dom”:“17.0.1”,

有问题的组件似乎是这样的:

import React, {
  lazy,
  Suspense
} from 'react';

import List from 'antd/lib/list';
  
const Stories = (props) => {
    return(
  <div className="stories-container">

    <div>
      <h1 className="StoriesTitle">Stories</h1>
    </div>

    <div className="StoryListContainer">
     <Suspense fallback={<Spin />}>
        <List
          itemLayout="vertical"
          size="default"
          pagination={pagination}
          dataSource={stories}
          renderItem={item =>
            <StoryItem
              item={item}
              deleteFn={onDelete}
              loggedIn={loggedIn}
              stories={stories}
            />
          }
        />
      </Suspense>
    </div>

  </div>
    );
} …
Run Code Online (Sandbox Code Playgroud)

reactjs antd react-testing-library

8
推荐指数
2
解决办法
3280
查看次数

React 路由器 - useOutletContext 测试

我正在使用react-router V6并尝试测试useOutletContext的新功能。我的测试库是testing-library/react,我不确定如何在测试中传递上下文数据。

在 TSX 组件中,我使用 React-router 的钩子获取数据:

const { data } = useOutletContext<IContext>()
Run Code Online (Sandbox Code Playgroud)

我需要类似的东西:

test("render outlet context data view", async () => {
  const { getByTestId } = render(
    <MockedProvider mocks={[mockData]} context={myContextData}>
       <ContextDataView />
    </MockedProvider>
)
Run Code Online (Sandbox Code Playgroud)

MockedProvider 标签来自@apollo/client/testing

context={myContextData} 部分是我需要的

reactjs react-router apollo-client react-testing-library

7
推荐指数
2
解决办法
4285
查看次数

使用 TypeScript 设置 Redux、路由器和动态模块的 React-Testing-Library

我有一个小型应用程序redux-dynamic-modules,用作存储,react-router用于路由,所有组件都是带有useStateuseHistoryuseLocationuseSelector等钩子的函数组件useDispatch

我想设置react-testing-library来测试组件,正如文档中所述,我需要设置一个自定义render().

所以这是我的index.tsx

import React from "react";
import ReactDOM from "react-dom";
import "./index.css";
import App from "./App";
import { Provider } from "react-redux";
import { store } from "./redux/store";


ReactDOM.render(
  <Provider store={store}>
    <App />
  </Provider>,
  document.getElementById("root")
);
Run Code Online (Sandbox Code Playgroud)

这是我的 App.tsx

import React from "react";
import { BrowserRouter as Router, Route } from "react-router-dom";
import { SearchPage } from "./pages/search/search-page";
import …
Run Code Online (Sandbox Code Playgroud)

typescript reactjs redux react-testing-library redux-dynamic-modules

5
推荐指数
1
解决办法
2664
查看次数

在反应测试库上运行简单测试时,为什么我不断收到“TypeError:无法读取未定义的属性(读取“匹配”)”?

我已尽最大努力找出问题所在,但到目前为止我尝试的一切都不起作用。

这就是我的 App.js 的样子:

import './App.css';
import {ChakraProvider} from '@chakra-ui/react'
import Header from './components/Header'
import Hero from './components/Hero'
import Highlights from './components/Highlights.js'
import About from './components/About.js'
import Footer from './components/Footer.js'
import Reserve from './components/Reserve.js'
import '@fontsource/karla'
import '@fontsource/markazi-text'
import theme from './theme'
import { Routes, Route,} from "react-router-dom";

function Homepage(){
  return(
    <>
      <Hero/>
      <Highlights/>
      <About/>
      <Footer/>
    </>
  )
}
function App() {
  return (
    <ChakraProvider theme={theme}>
      <Header/>
      <main>
        <Routes>
          <Route path='/' element={<Homepage/>}/>
          <Route path='/Reservations' element={<Reserve/>}/>
        </Routes>
      </main>
    </ChakraProvider>
  );
} …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-testing-library

5
推荐指数
1
解决办法
987
查看次数

类型错误:j.window.matchMedia 不是函数

我已经针对找不到“window.matchMedia”的问题TypeError: j.window.MatchMedia is not a function实现了 Maxime 的解决方案,但是当我运行测试时,出现此错误: 。

我不确定我需要做什么才能解决“j”,因为如果我改变第一行

Object.defineProperties(window, "matchMedia" {

Object.defineProperties(j.window, "matchMedia" {

Jest 告诉我它无法解析“j”,这是有道理的,但不能帮助我理解和修复错误。

testing typescript jestjs angular

1
推荐指数
1
解决办法
8176
查看次数