iT邦幫忙

2021 iThome 鐵人賽

DAY 12
0

MSW實戰

今天我們來實戰一個msw的使用,首先我們先隨意建立一個component,我是建立一個Users component.

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

type UserType = {
  name: string;
  city: string;
};

const Users = () => {
  const [users, setUsers] = useState<UserType[]>([]);

  useEffect(() => {
    const getUsers = async () => {
      const userList = await axios.get('http://localhost:5000/users');
      const { data } = userList;

      if (data) {
        setUsers(data);
      }
    };

    getUsers();
  }, []);

  return (
    <>
      {users.length > 0
        ? users.map((user) => {
            return (
              <div key={user.name} role="user">
                {user.name}
              </div>
            );
          })
        : null}
    </>
  );
};

export default Users;

上面這一段程式是建立一個users的列表,一開始狀態設為空陣列,當我們透過axios去拉取server的資料,取得資料時users會列印出來,我們在昨天有時做一個handlers所以我們透過axios抓取資料時我們的msw會攔截並回傳一個內含三筆資料的array

import { render, screen } from '@testing-library/react';
import Users from '../Users';

describe('<Users />', () => {
  test('should get three lines user data', async () => {
    render(<Users />);

    const users = await screen.findAllByRole('user');
    expect(users).toHaveLength(3);
  });
});

我們這個就可以取得三筆資料


上一篇
Day 11 MSW初體驗
下一篇
Day 13 MSW的return Error Type
系列文
我不會測試,所以寫Jest與React Testing Library30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言