admin管理员组文章数量:1410682
When i the run test it gives me an error TypeError: Cannot read property 'then' of undefined, I've tried to look for some fix on the Docs but i didn't find one to fix this issue, any idea on how to fix this problem will be much appreciated thanks.
contact-actions.js
export function getContacts() {
return function(dispatch) {
dispatch({type: 'GET_CONTACTS_PENDING'})
axios.get('http://127.0.0.1:8000/api/contacts', {
})
.then((response) => {
dispatch({type: 'GET_CONTACTS', payload: response.data})
dispatch(hideLoading())
})
.catch((error) => {
dispatch({type: 'CONTACT_ERROR', payload: error})
})
}
}
app.spec.js
import React from 'react';
import { shallow, mount } from 'enzyme';
import renderer from 'react-test-renderer';
import MockAdapter from 'axios-mock-adapter';
import configureMockStore from 'redux-mock-store';
import nock from 'nock';
import axios from 'axios';
import moxios from 'moxios';
import expect from 'expect';
import thunk from 'redux-thunk';
import { Provider } from 'react-redux';
import * as actions from '../src/actions/contact-actions';
import * as types from '../src/constants/action-types';
const middlewares = [thunk];
const mockStore = configureMockStore(middlewares);
describe('async actions', () => {
afterEach(() => {
nock.cleanAll();
});
it('creates GET_CONTACTS when fetching contacts has been done', () => {
const store = mockStore({});
const contacts = {};
nock('http://127.0.0.1:8000')
.get('/api/contacts')
.reply(200, { body: { contacts: [{ first_name: 'shadow', last_name: 'madow', phone: 5566, email: '[email protected]' }] } });
const expectedActions = [
{ type: types.GET_CONTACTS, body: { contacts: [{ first_name: 'shadow', last_name: 'madow', phone: 5566, email: '[email protected]' }] }}
];
return store.dispatch(actions.getContacts()).then(() => {
// return of async actions
expect(store.getActions()).toEqual(expectedActions);
});
});
});
When i the run test it gives me an error TypeError: Cannot read property 'then' of undefined, I've tried to look for some fix on the Docs but i didn't find one to fix this issue, any idea on how to fix this problem will be much appreciated thanks.
contact-actions.js
export function getContacts() {
return function(dispatch) {
dispatch({type: 'GET_CONTACTS_PENDING'})
axios.get('http://127.0.0.1:8000/api/contacts', {
})
.then((response) => {
dispatch({type: 'GET_CONTACTS', payload: response.data})
dispatch(hideLoading())
})
.catch((error) => {
dispatch({type: 'CONTACT_ERROR', payload: error})
})
}
}
app.spec.js
import React from 'react';
import { shallow, mount } from 'enzyme';
import renderer from 'react-test-renderer';
import MockAdapter from 'axios-mock-adapter';
import configureMockStore from 'redux-mock-store';
import nock from 'nock';
import axios from 'axios';
import moxios from 'moxios';
import expect from 'expect';
import thunk from 'redux-thunk';
import { Provider } from 'react-redux';
import * as actions from '../src/actions/contact-actions';
import * as types from '../src/constants/action-types';
const middlewares = [thunk];
const mockStore = configureMockStore(middlewares);
describe('async actions', () => {
afterEach(() => {
nock.cleanAll();
});
it('creates GET_CONTACTS when fetching contacts has been done', () => {
const store = mockStore({});
const contacts = {};
nock('http://127.0.0.1:8000')
.get('/api/contacts')
.reply(200, { body: { contacts: [{ first_name: 'shadow', last_name: 'madow', phone: 5566, email: '[email protected]' }] } });
const expectedActions = [
{ type: types.GET_CONTACTS, body: { contacts: [{ first_name: 'shadow', last_name: 'madow', phone: 5566, email: '[email protected]' }] }}
];
return store.dispatch(actions.getContacts()).then(() => {
// return of async actions
expect(store.getActions()).toEqual(expectedActions);
});
});
});
Share
Improve this question
edited Mar 15, 2021 at 14:39
Alex Ironside
5,07914 gold badges76 silver badges135 bronze badges
asked May 22, 2018 at 12:32
user-9725874user-9725874
8719 silver badges15 bronze badges
1 Answer
Reset to default 4Be sure to return the promise from the anonymous function inside getContacts():
export function getContacts() {
return function(dispatch) {
dispatch({type: 'GET_CONTACTS_PENDING'})
axios.get('http://127.0.0.1:8000/api/contacts', { // THIS LINE
})
...
Change this:
axios.get('http://127.0.0.1:8000/api/contacts', {
to this:
return axios.get('http://127.0.0.1:8000/api/contacts', {
Right now it lacks a return statement and so returns undefined
.
本文标签: javascriptJestTest gives an error TypeError Cannot read property 39then39 of undefinedStack Overflow
版权声明:本文标题:javascript - Jest - Test gives an error TypeError: Cannot read property 'then' of undefined - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1744938534a2633338.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论