Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 反应天然/酶:mount throws“;“未知道具”;论本土元素_Reactjs_React Native_Jestjs_Jsdom_Enzyme - Fatal编程技术网

Reactjs 反应天然/酶:mount throws“;“未知道具”;论本土元素

Reactjs 反应天然/酶:mount throws“;“未知道具”;论本土元素,reactjs,react-native,jestjs,jsdom,enzyme,Reactjs,React Native,Jestjs,Jsdom,Enzyme,我在React Native中使用Jest&Ezyme编写测试,以全面测试我的组件行为和内部功能。 浅层测试似乎还可以,但当使用mount时,它只是抛出 这是我的package.json { "name": "Despirithium", "version": "1.0.0", "private": true, "scripts": { "start": "node node_modules/react-native/local-cli/cli.js start",

我在React Native中使用Jest&Ezyme编写测试,以全面测试我的组件行为和内部功能。 浅层测试似乎还可以,但当使用mount时,它只是抛出

这是我的package.json

{
  "name": "Despirithium",
  "version": "1.0.0",
  "private": true,
  "scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "buildandroid": "react-native bundle --platform=android --entry-file=index.android.js --bundle-output='android/app/src/main/assets/index.android.bundle?dev=false",
    "test": "jest --watch"
  },
  "dependencies": {
    "axios": "^0.15.*",
    "dpath": "^2.0.2",
    "evosphere-router": "0.1.9",
    "immutable": "^3.8.1",
    "intl": "^1.2.5",
    "lodash": "^4.16.4",
    "node-uuid": "^1.4.7",
    "normalizr": "^2.2.1",
    "react": "15.3.2",
    "react-native": "0.36.0",
    "react-native-drawer": "^2.3.0",
    "react-native-i18n": "^0.1.1",
    "react-native-image-picker": "^0.22.12",
    "react-native-router-flux": "^3.35.0",
    "react-native-tabs": "^1.0.9",
    "react-redux": "^4.4.5",
    "redux": "^3.6.0",
    "redux-immutable": "^3.0.8",
    "redux-logger": "^2.7.0",
    "redux-thunk": "^2.1.0",
    "string-template": "^1.0.0",
    "tcomb-form-native": "^0.6.1"
  },
  "devDependencies": {
    "babel-core": "^6.14.0",
    "babel-jest": "^17.0.2",
    "babel-plugin-transform-object-rest-spread": "^6.8.0",
    "babel-plugin-transform-react-jsx": "^6.8.0",
    "babel-plugin-transform-remove-console": "^6.8.0",
    "babel-polyfill": "^6.13.0",
    "babel-preset-latest": "6.14.0",
    "babel-preset-react-native": "^1.9.0",
    "babel-preset-react-native-stage-0": "^1.0.1",
    "babel-register": "^6.14.0",
    "enzyme": "^2.6.0",
    "enzyme-to-json": "^1.3.0",
    "faussaire": "^0.2.2",
    "faussaire-util": "^0.1.0",
    "jest": "^17.0.3",
    "jest-enzyme": "^2.0.0",
    "jest-react-native": "^17.0.3",
    "react-addons-test-utils": "15.3.2",
    "react-dom": "15.3.2",
    "react-native-fs": "^2.0.1-rc.2",
    "react-native-mock": "^0.2.7",
    "react-test-renderer": "15.3.2",
    "updtr": "^0.2.1"
  },
  "jest": {
    "scriptPreprocessor": "<rootDir>/node_modules/babel-jest",
    "setupTestFrameworkScriptFile": "node_modules/jest-enzyme/lib/index.js",
    "testEnvironment": "jsdom",
    "moduleFileExtensions": [
      "js",
      "json",
      "es6"
    ],
    "preset": "jest-react-native"
  }
}
{
“名称”:“轻视锂”,
“版本”:“1.0.0”,
“私人”:没错,
“脚本”:{
“开始”:“node node_modules/react native/local cli/cli.js start”,
“buildandroid”:“react native bundle--platform=android--entry file=index.android.js--bundle output='android/app/src/main/assets/index.android.bundle?dev=false”,
“测试”:“开玩笑——看”
},
“依赖项”:{
“axios”:“^0.15.*”,
“dpath”:“^2.0.2”,
“evosphere路由器”:“0.1.9”,
“不可变”:“^3.8.1”,
“intl”:“^1.2.5”,
“lodash”:“^4.16.4”,
“节点uuid”:“^1.4.7”,
“normalizer”:“^2.2.1”,
“反应”:“15.3.2”,
“反应本机”:“0.36.0”,
“反应本机抽屉”:“^2.3.0”,
“react-native-i18n”:“^0.1.1”,
“反应本机映像选择器”:“^0.22.12”,
“react本机路由器流量”:“^3.35.0”,
“反应本机选项卡”:“^1.0.9”,
“react redux”:“^4.4.5”,
“redux”:“^3.6.0”,
“redux不可变”:“^3.0.8”,
“redux记录器”:“^2.7.0”,
“redux thunk”:“^2.1.0”,
“字符串模板”:“^1.0.0”,
tcomb表单本机“^0.6.1”
},
“依赖性”:{
“巴别塔核心”:“^6.14.0”,
“巴别塔笑话”:“^17.0.2”,
“巴别塔插件转换对象静止排列”:“^6.8.0”,
“巴别塔插件转换jsx”:“^6.8.0”,
“巴别塔插件转换删除控制台”:“^6.8.0”,
“巴别塔polyfill”:“^6.13.0”,
“巴别塔预设最新版本”:“6.14.0”,
“巴别塔预设反应本机”:“^1.9.0”,
“babel-preset-react-native-stage-0”:“^1.0.1”,
“巴别塔寄存器”:“^6.14.0”,
“酶”:“^2.6.0”,
“酶到json”:“^1.3.0”,
“福赛尔”:“^0.2.2”,
“faussaire util”:“^0.1.0”,
“笑话”:“^17.0.3”,
“开玩笑的酶”:“^2.0.0”,
“jest react native”:“^17.0.3”,
“react插件测试实用程序”:“15.3.2”,
“反应dom”:“15.3.2”,
“反应本机fs”:“^2.0.1-rc.2”,
“反应本机模拟”:“^0.2.7”,
“反应测试渲染器”:“15.3.2”,
“updtr”:“^0.2.1”
},
“笑话”:{
“scriptPreprocessor”:“/节点\模块/babel jest”,
“SetupTestFrameworkScript文件”:“node_modules/jest enzyme/lib/index.js”,
“测试环境”:“jsdom”,
“moduleFileExtensions”:[
“js”,
“json”,
“es6”
],
“预设”:“开玩笑反应本机”
}
}
现在我的测试很简单。 global.Promise=require.requireActual(“Promise”)

导入“react native”;
从“React”导入React;
从“酶”导入{mount,shallow};
从“酶到json”导入{mountToJson};
从“../../../../../../src/bundles/application/ui/scene/public/LoginScene”导入{LoginScene};
从“../../../../../../../src/configureStore”导入configureStore;
从'react redux'导入{Provider};
从“../../../../../../src/testing/enzymeUtils”导入{getState,getInstance};
test('LoginScene',async()=>{
常量存储=等待配置存储();
让loginScene;
常量包装器=装入(
);
expect(mountToJson(wrapper)).toMatchSnapshot();
loginScene=wrapper.find(loginScene);
getInstance(loginScene)。_handleFieldChange('username','sderithium');
getInstance(loginScene)。_handleFieldChange('password','azerty');
expect(getState(wrapper.find(LoginScene)).username.toBe('sderithium');
expect(getState(wrapper.find(LoginScene)).password.toBe('azerty');
});

我可能会对此进行浅层渲染,但由于我需要将场景包装到提供程序中,这是不可能的。

您可能需要将提供程序包装到div中。“…组件必须返回单个根元素…”-

我还想知道解决此问题的方法。我看不到图像。即使我点击它,也不会打开更大的图像。这是puush链接。你找到解决方案了吗?我也对它感兴趣。我也想知道这个问题的解决方案。在RN中没有div。提供者也是一个根元素。
import 'react-native';
import React from 'react';
import { mount, shallow } from 'enzyme';
import { mountToJson } from 'enzyme-to-json';

import { LoginScene } from '../../../../../../src/bundles/application/ui/scene/public/LoginScene';
import configureStore from '../../../../../../src/configureStore';
import { Provider } from 'react-redux';

import { getState, getInstance } from '../../../../../../src/testing/enzymeUtils';

test('LoginScene', async () => {
    const store = await configureStore();
    let loginScene;

    const wrapper = mount(
        <Provider store={store}>
            <LoginScene/>
        </Provider>
    );

    expect(mountToJson(wrapper)).toMatchSnapshot();

    loginScene = wrapper.find(LoginScene);
    getInstance(loginScene)._handleFieldChange('username', 'despirithium');
    getInstance(loginScene)._handleFieldChange('password', 'azerty');

    expect(getState(wrapper.find(LoginScene)).username).toBe('despirithium');
    expect(getState(wrapper.find(LoginScene)).password).toBe('azerty');
});