Я использую мокко, фермент, chai и некоторые издевательские библиотеки, чтобы сделать возможным тестирование. Таким образом, содержание TestComponent.js ниже, я настраиваю магазин и передать его поставщику, в то время как DeskScreen подключен компонент:Как я могу проверить компонент на основе реакции с моккой + ферментом + chai, когда он завернут в компонент поставщика
import mockery from "mockery";
import 'babel-polyfill';
import reactNativeSvgMock from "react-native-svg-mock";
mockery.enable();
mockery.registerMock("react-native-svg", reactNativeSvgMock);
var DeskScreen = require('../app/containers/DeskScreen/DeskScreen');
import React, {View, Text, StyleSheet} from 'react-native';
import {Provider} from 'react-redux';
import {shallow, render, mount} from 'enzyme';
import {expect} from 'chai';
import configureStore from 'redux-mock-store';
import reducer from "../app/reducers";
import Button from "../app/containers/Common/Button";
import ButtonWithNoFlex from "../app/containers/Common/ButtonWithNoFlex";
const mockStore = configureStore([]);
describe('<Test />',() => {
it('it should render 1 view component',() => {
const store = mockStore(reducer);
var comp = shallow(
<Provider store={store}>
<DeskScreen/>
</Provider>
);
expect(button).to.have.length(1);
expect(comp.find(View)).to.have.length(1);
});
});
После выполнения теста команды НОЙ она производит следующее:
1) it should render 1 view component
0 passing (1s)
1 failing
1) <Test /> it should render 1 view component:
AssertionError: expected { Object (root, unrendered, ...) } to have a length of 1 but got 0
at Context.<anonymous> (test/TestComponent.js:22:41)
Может быть, причина в том, я использую неглубоко вместо монтировки, но, как я знаю, что крепление не доступен для реакции родной. Во всяком случае, я хотел бы как-то проверить подключенный компонент.
Сумасшедший реквизит на вашем * 2. Обеспечить контекст через мелкие * - помогли мне тонны! –