이없는 나는이 내 반작용 구성 요소 중 하나에서 다음과 같은 비동기 호출 :반환 값은`then` 재산
onSubmit = (data) => {
this.props.startAddPost(data)
.then(() => {
this.props.history.push('/');
});
};
여기서의 목표는 인덱스 페이지로 사용자를 리디렉션 만 일단 게시물이 Redux에 저장되면 (startAddPost
은 액시스를 사용하여 외부 API에 데이터를 보내고 Redux 저장소에 새 게시물을 저장하는 다른 작업을 전달하는 비동기 액션 생성기이므로 전체 작업이 반환되므로 체인을 연결할 수 있습니다 구성 요소 자체에서 then
이 호출됩니다. 그것은 애플 리케이션에서 잘 작동하지만, 그것을 테스트하는 데 문제가 있습니다.
import React from 'react';
import { shallow } from 'enzyme';
import { AddPost } from '../../components/AddPost';
import posts from '../fixtures/posts';
let startAddPost, history, wrapper;
beforeEach(() => {
startAddPost = jest.fn();
history = { push: jest.fn() };
wrapper = shallow(<AddPost startAddPost={startAddPost} history={history} />);
});
test('handles the onSubmit call correctly',() => {
wrapper.find('PostForm').prop('onSubmit')(posts[0]);
expect(startAddPost).toHaveBeenLastCalledWith(posts[0]);
expect(history.push).toHaveBeenLastCalledWith('/');
});
그래서 나는 분명히 전달하는이 테스트를 필요로하지만, 다음과 같은 출력 실패 :
● handles the onSubmit call correctly
TypeError: Cannot read property 'then' of undefined
at AddPost._this.onSubmit (src/components/AddPost.js:9:37)
at Object.<anonymous> (src/tests/components/AddPost.test.js:25:46)
at process._tickCallback (internal/process/next_tick.js:109:7)
그래서 나는이 문제를 어떻게 해결할 수 있습니까? 모든 것이 실제 앱에서 잘 작동하기 때문에 테스트 자체에 문제가 있다고 생각됩니다. 고맙습니다!
'startAddPost'는 모의 함수입니다. 왜 당신은 그것이 약속을 되 찾을 것으로 기대합니까? –