reactjs 我应该在我的前端测试什么?(React Typescript)-新手问题[已关闭]

jv2fixgn  于 2023-02-18  发布在  React
关注(0)|答案(2)|浏览(111)

已关闭。此问题为opinion-based。当前不接受答案。
**想要改进此问题吗?**请更新此问题,以便editing this post可以用事实和引文来回答。

昨天关门了。
Improve this question
我是一个新的开发人员,从来没有测试过与后端无关的前端功能。我见过很多关于这个问题的问题,但没有一个回答能让我读得清楚。我有一个React.ts/.NET项目,对前端测试很好奇。
应该测试哪些类型的函数?我知道任何与连接到后端相关的都应该测试,但还有什么呢?UI函数,如切换可见性,组件返回,状态,状态更改函数等?
我正在建立一个网站的人,并希望遵循所有的最佳做法,但正在努力找到一个共识,这是在平原英语。

ilmyapht

ilmyapht1#

您将测试视为开发过程的一部分,这非常好。测试是软件开发的一个重要方面,它有助于确保您的代码按预期工作,并在投入生产之前捕获问题。
关于在React.ts/.NET项目中测试什么,下面是一些通用的指导原则:

  • 测试所有业务逻辑函数:这包括操作数据、执行计算或实施业务规则的函数。这些函数对于应用程序的正常运行至关重要,因此必须对其进行彻底测试,以确保它们按预期工作。
  • 测试所有UI功能:这包括处理用户

交互,如切换可见性、单击按钮等。这些功能对于应用程序的运行也至关重要
并且会影响用户体验,因此对其进行测试非常重要
也要彻底。

  • 测试所有状态相关功能:这包括更改状态的函数,如setState()或useReducer()。测试这些函数将有助于确保正确更新应用程序状态,并确保组件按预期重新呈现。
  • 测试所有组件返回:这包括返回JSX代码的函数。测试这些函数将有助于确保呈现正确的HTML,并且您的组件按预期运行。
  • 测试所有组件生命周期:这包括componentDidMount()和componentWillUnmount()这样的函数。测试这些函数将有助于确保组件正确安装和卸载。
  • 测试所有边缘情况:这包括在可能不经常发生的方案(如错误条件或意外的用户输入)中测试代码。通过测试边缘情况,可以在潜在问题成为用户问题之前捕获这些问题。

在测试方面,您可以使用不同类型的测试,如单元测试、集成测试和端到端测试。通常,从单元测试开始是一个好主意,它可以单独测试各个功能。这可以帮助您在开发过程的早期发现问题,并更容易地确定出现的任何问题的根本原因。
在测试React.ts/.NET应用程序的工具方面,有几个流行的框架可供选择,如Jest、React Testing Library和Enzyme,这些框架提供了编写和运行测试的工具,以及测试React组件的实用程序。
总的来说,测试是构建可靠且可维护的软件的重要组成部分,您希望将其整合到您的开发过程中,这是非常好的。通过一点实践,您很快就会发现测试已成为您的开发工作流中不可或缺的一部分,帮助您及早发现问题并确保高质量的用户体验。

am46iovg

am46iovg2#

如果你指的是测试你的react-app的组件,这真的很简单(显然你可以对组件进行非常广泛的测试),但是如果你是一个初学者,你只想测试你的组件,使它们不会损坏,那么你可以选择jest
这也是我个人的选择,这也是我作为一个react开发人员一直在使用的主要方法,我将给出一个非常简单的例子(如jest的文档页面所示),说明如何测试一个简单的组件(您可以称之为Link.js):

import {useState} from 'react';

const STATUS = {
  HOVERED: 'hovered',
  NORMAL: 'normal',
};

export default function Link({page, children}) {
  const [status, setStatus] = useState(STATUS.NORMAL);

  const onMouseEnter = () => {
    setStatus(STATUS.HOVERED);
  };

  const onMouseLeave = () => {
    setStatus(STATUS.NORMAL);
  };

  return (
    <a
      className={status}
      href={page || '#'}
      onMouseEnter={onMouseEnter}
      onMouseLeave={onMouseLeave}
    >
      {children}
    </a>
  );
}

当然,我想为这个组件构建一些测试用例,所以我将使用jest,我可以测试组件重新呈现、悬停事件、鼠标进入、鼠标离开组件时的多种情况,并且您在这里也有大量文档jest docs for react

import renderer from 'react-test-renderer';
import Link from '../Link';

it('changes the class when hovered', () => {
  const component = renderer.create(
    <Link page="http://www.facebook.com">Facebook</Link>,
  );
  let tree = component.toJSON();
  expect(tree).toMatchSnapshot();

  // manually trigger the callback
  renderer.act(() => {
    tree.props.onMouseEnter();
  });
  // re-rendering
  tree = component.toJSON();
  expect(tree).toMatchSnapshot();

  // manually trigger the callback
  renderer.act(() => {
    tree.props.onMouseLeave();
  });
  // re-rendering
  tree = component.toJSON();
  expect(tree).toMatchSnapshot();
});

相关问题