reactjs – 我如何在开玩笑中测试axios

我有这个行动的反应

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

在这种情况下我如何测试axios? Jest在那里使用了这个用例的异步代码,他们使用模拟函数,但我不知道我是否可以用axios做到这一点? ref: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);
});

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

先谢谢你

最佳答案
我使用了axios-mock-adapter.
在这种情况下,服务在./chatbot中描述.
在模拟适配器中,您可以指定在使用API​​端点时要返回的内容.

import axios from 'axios';
import MockAdapter from 'axios-mock-adapter';
import chatbot from './chatbot';

describe('Chatbot', () => {
    it('returns data when sendMessage is called', done => {
        var mock = new MockAdapter(axios);
        const data = { response: true };
        mock.onGet('https://us-central1-hutoma-backend.cloudfunctions.net/chat').reply(200, data);

        chatbot.sendMessage(0, 'any').then(response => {
            expect(response).toEqual(data);
            done();
        });
    });
});

你可以在这里看到整个例子:

服务:
https://github.com/lnolazco/hutoma-test/blob/master/src/services/chatbot.js

测试:
https://github.com/lnolazco/hutoma-test/blob/master/src/services/chatbot.test.js

转载注明原文:reactjs – 我如何在开玩笑中测试axios - 代码日志