Day 13 MSW的return Error Type

这是一个来自msw的错误处理当我们想要验证是否元件会因为server回传错误的资料而产生错误警示

import { useEffect, useState } from 'react';
import axios from 'axios';

type NewsType = {
  title: string;
  img: string;
};

const News = () => {
  const [newsList, setNewsList] = useState<NewsType[]>([]);
  const [error, setError] = useState<string | null>(null);

  useEffect(() => {
    const getNews = async () => {
      try {
        const news = await axios.get('http://localhost:5000/news');
      } catch (error) {
        setError('SERVER ERROR');
      }
    };

    getNews();
  }, []);

  return (
    <div>
      {newsList.length > 0
        ? newsList.map((news) => {
            return (
              <div key={news.title} role="news">
                {news.title}
              </div>
            );
          })
        : null}
      {error ? <div role="error">{error}</div> : null}
    </div>
  );
};

export default News;

那我们如何透过msw回传一个错误的状态码来让前端的component接收到catch

import { render, screen } from '@testing-library/react';
import { rest } from 'msw';
import News from '../News';
import { server } from '../../../mocks/server';

describe('<Users />', () => {
  test('should component show error message', async () => {
    server.resetHandlers(
      rest.get('http://localhost:5000/news', (req, res, ctx) => {
        return res(ctx.status(400));
      })
    );

    render(<News />);

    const error = await screen.findByRole('error');

    expect(error).toBeInTheDocument();
  });
});

这边我们就验证当我们回传一个错误讯息时,component的catch会抓到error进而产生错误讯息,这时我们可以重新resetHandler复写一个错误的response让测试的元件接收到statusCode(400)的错误

接下来使用tobeIndocument来验证


<<:  DAY26-JAVA的Runnable介面

>>:  Day 13 Decorator Part - 1

【必学】如何救回 iPhone 已删除通话记录

「久未联络的朋友,我还没存他的电话,但不小心删除了 iPhone 通话记录。请问我还能还原消失不见的...

[Day26]C# 鸡础观念- 物件导向(oop)~ 多载(Overload)

很多便利商店都有他们的制服, 穿着一模一样的制服, 就算离开店面, 大家都还是拥有极高的辨识度, C...

[Day30] 前面就是终点,该写什麽呢?

要不要自己加赛到 42 天?还是乖乖完赛就好? 记得以前还是跑者的时候,练跑距离大概都维持在 8 公...

Snail

今日kata 原始题目如下:(4kyu) Given an n x n array, return ...