相关疑难解决方法(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万
查看次数

如何使用axios拦截器?

我看过axios文档,但它说的只是

// Add a request interceptor
axios.interceptors.request.use(function (config) {
    // Do something before request is sent
    return config;
  }, function (error) {
    // Do something with request error
    return Promise.reject(error);
  });

// Add a response interceptor
axios.interceptors.response.use(function (response) {
  // Do something with response data
  return response;
}, function (error) {
  // Do something with response error
  return Promise.reject(error);
});
Run Code Online (Sandbox Code Playgroud)

同样,许多教程仅显示此代码,但是我很困惑它的用途,有人可以给我简单的示例进行操作。

javascript axios

22
推荐指数
7
解决办法
2万
查看次数

模拟内部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
查看次数

如何模拟 axios.create([config]) 函数以返回其实例方法而不是用模拟覆盖它们?

我正在尝试模拟axios.create()因为我在整个应用程序中使用它的实例并且显然需要它的所有实现都被模拟破坏了,因此无法正确获得 get、post 方法的结果。

这是代码在实际文件中的样子:

 export const axiosInstance = axios.create({
        headers: {
           ...headers
        },
        transformRequest: [
            function (data, headers) {
                return data;
            },
        ],
    });
    const response = await axiosInstance.get(endpoint);
Run Code Online (Sandbox Code Playgroud)

这是测试文件中 axios 的模拟设置

   jest.mock('axios', () => {
        return {
            create: jest.fn(),
            get: jest.fn(() => Promise.resolve()),
        };
    }
);
Run Code Online (Sandbox Code Playgroud)

我怎样才能获得 axiosInstance 变量中的所有实例方法,而不是只有一个什么都不做的模拟函数?

axios.create 和实例方法的文档:https : //github.com/axios/axios#instance-methods

javascript unit-testing jestjs axios react-testing-library

2
推荐指数
1
解决办法
4200
查看次数