Reactjs 如何使用jest和酶进行单元测试?
我是一个新的反应和重复。 我正在开发一个项目,为此我想使用ReduxSause和redux saga来实现redux,但我正在努力为这些编写单元测试。 以下是我的文件夹结构: My App-test.js:Reactjs 如何使用jest和酶进行单元测试?,reactjs,redux,react-redux,jestjs,redux-saga,Reactjs,Redux,React Redux,Jestjs,Redux Saga,我是一个新的反应和重复。 我正在开发一个项目,为此我想使用ReduxSause和redux saga来实现redux,但我正在努力为这些编写单元测试。 以下是我的文件夹结构: My App-test.js: import App from '../../../assets/src/App' import React from 'react'; import renderer from 'react-test-renderer'; import configureStore from 'redu
import App from '../../../assets/src/App'
import React from 'react';
import renderer from 'react-test-renderer';
import configureStore from 'redux-mock-store'
import createStore from './Redux'
describe('App', () => {
const initialState = {output:100}
const mockStore = configureStore()
let store,container
const store = createStore()
beforeEach(()=>{
store = mockStore(initialState)
container = shallow(<App store={store} /> )
})
it('renders correctly', () => {
const rendered = renderer.create(
<App/>
);
expect(rendered.toJSON()).toMatchSnapshot();
});
});
从“../../../assets/src/App”导入应用程序
从“React”导入React;
从“反应测试渲染器”导入渲染器;
从“redux模拟存储”导入配置存储
从“/Redux”导入createStore
描述('App',()=>{
常量initialState={output:100}
const mockStore=configureStore()
让我们储存,容器
const store=createStore()
在每个之前(()=>{
store=mockStore(initialState)
容器=浅(
有什么建议这里有什么问题吗
谢谢
更新1
我现在为shallow禁用了代码,现在我的App-test.js文件如下所示:
import App from '../../../assets/src/App'
import React from 'react';
import renderer from 'react-test-renderer';
import configureStore from 'redux-mock-store'
import createStore from './Redux'
describe('App', () => {
const initialState = {output:100}
const mockStore = configureStore()
let store,container
const store = createStore()
// beforeEach(()=>{
//// store = mockStore(initialState)
// container = shallow(<App store={store} /> )
// })
it('renders correctly', () => {
const rendered = renderer.create(
<App/>
);
expect(rendered.toJSON()).toMatchSnapshot();
});
});
从“../../../assets/src/App”导入应用程序
从“React”导入React;
从“反应测试渲染器”导入渲染器;
从“redux模拟存储”导入配置存储
从“/Redux”导入createStore
描述('App',()=>{
常量initialState={output:100}
const mockStore=configureStore()
让我们储存,容器
const store=createStore()
//在每个之前(()=>{
////store=mockStore(initialState)
//容器=浅(
更新2
按照Rami Enbashi在回答中的建议尝试解决方案后,先前的错误(更新1之前)再次出现。这似乎是一个传输问题。您需要注册Babel,以便在运行单元测试之前将ES6传输到ES5。一种方法是这样做
在package.json
中添加此jest配置:
"jest": {
"setupTestFrameworkScriptFile": "./scripts/testsetup.js"
}
在testsetup.js
中添加
require('babel-register')();
require("babel-polyfill");
require("babel-jest");
.....
请确保阅读Jest文档以获取更多配置或所需插件。并确保首先安装它们。我没有看到导入shallow
。您确定使用的是Ezyme的“shallow”吗?@RamiEnbashi我已通过编辑更新了我的问题,请看一看,我在每次取消之前的静音后,现在遇到了不同的错误ally在尝试了这一点之后,它再次开始抱怨之前的错误,那是在我的描述中的更新1之前。你能尝试在每个之前移动并将模拟代码存储在你的测试之外,并将它们放在文件的根级别,并确保你从“酶”导入“浅”吗?不,这没有帮助,它仍然提供同样的错误。
require('babel-register')();
require("babel-polyfill");
require("babel-jest");
.....