首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在beforeAll/beforeEvery中呈现相同的组件: testing-library/react

在beforeAll/beforeEvery中呈现相同的组件: testing-library/react
EN

Stack Overflow用户
提问于 2020-11-20 18:18:03
回答 1查看 1.4K关注 0票数 1

我在单独的测试中用一个组件测试不同的东西。我希望不必在每个单独的test中都编写render,但是下面的代码无法工作。

据我所知,清理功能会在每次测试后清除呈现的组件,所以这很好。

代码语言:javascript
复制
import React from "react";
import { Router } from "react-router-dom";
import { render } from "@testing-library/react";
import "@testing-library/jest-dom";

import myComp from './myComp'

const renderComponent = () => {
  return render(<myComp />);
};

describe("desc", () => {
  beforeEach(() => {
   const {getAllByText, getByText, getByRole} = renderComponent()
  });

  test("1", () => {
      console.log(getAllByText) // not defined
  });

  test("2", () => {
      console.log(getAllByText) // not defined

  });

})

上面的设置会导致错误:

代码语言:javascript
复制
ReferenceError: getAllByText is not defined

我目前的解决方法是在每个test中包含renderComponent()函数调用,但这看起来并不是很干净。

代码语言:javascript
复制
test("1", () => {
    const {getAllByText, getByText, getByRole} = renderComponent()
});

尝试:

代码语言:javascript
复制
let result;
beforeEach(() => {
    result = renderComponent();
    }
test("renders success state", () => {
    const { getByText } = result;
    expect(getByText(noAccess)).toBeInTheDocument();
    expect(getByText(applyForAccessButton)).toBeInTheDocument();});

我得到的错误是:

代码语言:javascript
复制
    TypeError: Cannot read property 'getByText' of undefined
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-20 18:56:40

getAllByTextbeforeEach函数的本地函数,它没有在访问它的测试范围中定义。为了使这种方法可行,它应该是:

代码语言:javascript
复制
  let getAllByText, getByText, getByRole;

  beforeEach(() => {
   ({getAllByText, getByText, getByRole} = renderComponent());
  });
  ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64927641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档