我开始开发一个应用程序,第一批测试有几个这样的测试来测试组件是否呈现:
import { shallow } from 'enzyme';
import NavLink from 'components/sidebar/NavLink';
it('renders without crashing', () => {
const wrapper = shallow(NavLink);
expect(wrapper).toBeDefined();
});
[编辑]此测试也失败了:
import { take } from 'redux-saga';
import fetchSaga from 'store/events/saga';
import { types } from 'store/events/reducer';
it('should know Events where requested', () => {
const gen = fetchSaga();
expect(gen.next().value).toEqual(take(types.EVENTS_REQUESTED));
});
我尝试了各种组件的这种方法,但它们始终失败:
FAIL src/components/sidebar/navLink/NavLink.test.jsx
● Test suite failed to run
Expected the reducer to be a function.
at createStore (node_modules/redux/lib/redux.js:97:11)
at node_modules/redux/lib/redux.js:561:31
at createStore (node_modules/redux/lib/redux.js:93:33)
at configureStore (src/store/configureStore.js:10:40)
at Object.<anonymous> (src/index.jsx:9:44)
at Object.<anonymous> (node_modules/cheerio/node_modules/parse5/lib/parser/parser_stream.js:5:14)
at Object.<anonymous> (node_modules/cheerio/node_modules/parse5/lib/index.js:41:24)
at Object.<anonymous> (node_modules/cheerio/lib/parse.js:5:14)
at Object.<anonymous> (node_modules/cheerio/lib/cheerio.js:5:13)
at Object.<anonymous> (node_modules/cheerio/index.js:5:28)
at Object.<anonymous> (node_modules/enzyme/build/ReactWrapper.js:13:16)
at Object.<anonymous> (node_modules/enzyme/build/index.js:1:110)
at Object.<anonymous> (node_modules/enzyme-matchers/lib/assertions/toContainReact.js:7:15)
at Object.<anonymous> (node_modules/enzyme-matchers/lib/index.js:19:23)
at Object.<anonymous> (node_modules/jest-enzyme/lib/index.js:5:23)
at handle (node_modules/worker-farm/lib/child/index.js:44:8)
at process.<anonymous> (node_modules/worker-farm/lib/child/index.js:51:3)
at emitTwo (events.js:125:13)
at process.emit (events.js:213:7)
at emit (internal/child_process.js:774:12)
at _combinedTickCallback (internal/process/next_tick.js:141:11)
at process._tickCallback (internal/process/next_tick.js:180:9)
唯一使用configureStore
的地方位于应用程序根目录中的Index.jsx
中:
import React from 'react';
import ReactDOM from 'react-dom';
import { Provider as StoreProvider } from 'react-redux';
import App from './App';
import registerServiceWorker from './registerServiceWorker';
import configureStore from './store/configureStore';
const initialState = { events: { entities: [], result: {} } };
const store = configureStore(initialState);
ReactDOM.render((
<StoreProvider store={store}>
<App />
</StoreProvider>), document.getElementById('root'));
registerServiceWorker();
对我来说,为什么shallow
会尝试渲染完整的应用程序,而它本应该避免使用
知道发生了什么事吗?我觉得这是一种蹩脚的简单事物,但似乎并没有找到它是什么