相关疑难解决方法(0)

如何在开玩笑中测试axios

我有这个行动的反应

export function fetchPosts() {
    const request = axios.get(`${WORDPRESS_URL}`);
    return {
        type: FETCH_POSTS,
        payload: request
    }
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下如何测试axios?Jest在那里有这个用例的异步代码,他们使用模拟函数,但我不知道我是否可以用axios做到这一点?参考:https://facebook.github.io/jest/docs/tutorial-async.html

到目前为止,我已经做了这个测试,它正在返回正确的类型

it('should dispatch actions with the correct type', () => {
    store.dispatch(fetchPosts());
    let action = store.getActions();
    expect(action[0].type).toBe(FETCH_POSTS);
});
Run Code Online (Sandbox Code Playgroud)

我不知道如何传递模拟数据并测试它返回但是,有没有人有任何想法?

先感谢您

reactjs jestjs react-redux

53
推荐指数
5
解决办法
6万
查看次数

React-testing-library 模拟 axios.create({}) 实例

我想用react-testing-library测试我的api 并且我从一个名为 apiClient.ts 的文件中导出由 axios.create 创建的实例

import axios from 'axios'

const apiClient = axios.create({
  baseURL: process.env.REACT_APP_API_URL,
  responseType: 'json',
  headers: {
    'Content-Type': 'application/json',
  },
})

export default apiClient
Run Code Online (Sandbox Code Playgroud)

然后在 users.ts fetchUsersApi 中使用我从 apiClient 获取的 axios 实例

import apiClient from './apiClient'

export interface ITrader {
  id: number
  name: string
  username: string
  email: string
  address: any
  phone: string
  website: string
  company: any
}

export const fetchTradersApi = async (): Promise<ITrader[]> => {
  const response = await apiClient.get<ITrader[]>('/users')
  return response.data
}
Run Code Online (Sandbox Code Playgroud)

我创建了一个 …

mocking reactjs axios react-testing-library

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

模拟内部axios.create()

我正在使用jestaxios-mock-adapter测试异步动作创建器中的axiosAPI调用redux.

当我使用axios这样创建的实例时,我无法使它们工作axios.create():

import axios from 'axios';

const { REACT_APP_BASE_URL } = process.env;

export const ajax = axios.create({
  baseURL: REACT_APP_BASE_URL,
});
Run Code Online (Sandbox Code Playgroud)

我会用它来消费它async action creator:

import { ajax } from '../../api/Ajax'

export function reportGet(data) {
  return async (dispatch, getState) => {
    dispatch({ type: REQUEST_TRANSACTION_DATA })

    try {
      const result = await ajax.post(
         END_POINT_MERCHANT_TRANSACTIONS_GET,
         data,
      )
      dispatch({ type: RECEIVE_TRANSACTION_DATA, data: result.data })
      return result.data
    } catch (e) {
      throw …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs jestjs axios create-react-app

5
推荐指数
3
解决办法
4272
查看次数