Reactjs 如何使用jest和酶进行单元测试?

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

我是一个新的反应和重复。 我正在开发一个项目,为此我想使用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 '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");
.....