Мелкий не работает должным образом в реакции теста - PullRequest
0 голосов
/ 13 октября 2018

У меня есть компонент ниже,

class CampaignLanding extends Component {
  constructor(props) {
    super(props);
  }

  render() {
    let { hasError } = this.props;
    if (hasError) {
      return <Page404 />;
    } else {
      return (
        <div>
          <Switch>
            <Route
              path="/vacions/:delogin"
              component={Login}
            />
          </Switch>
          <div
            className={classNames('filter-overlay', {
              show: showFilterOverlay
            })}
          />
        </div>
      );
    }
  }
}

function mapStateToProps(state) {
  if (state.user) {
    return {
      user: state.user.content
    };
  } else {
    return {
      id: state.app.id
    };
  }
}

function mapDispatchToProps(dispatch) {
  return {
    actions: {
      getUser: bindActionCreators(getUser, dispatch)
    }
  };
}

export default connect(mapStateToProps, mapDispatchToProps, null, {
  withRef: true
})(CampaignLanding);

Я попытался запустить спецификацию, как показано ниже,

const store = configureStore(window.REDUX_STATE || {});
const LocalProps = {
  match: {
    hasError: true
  }
};

// Snapshot for Home React Component
export const CustomProvider = ({ children }) => {
  return (
    <Provider store={store}>
      {children}
    </Provider>
  );
};

// Snapshot for Home React Component
describe('>>>Campaign Landing --- Snapshot', () => {
  it('+++Capturing Snapshot of CampaignLanding', () => {
    const wrapper = shallow(<CustomProvider><CampaignLanding {...LocalProps} /></CustomProvider>);
    expect(wrapper.contains(<Page404 />)).toBe(true);
  });
});

Я использовал этот тестовый пример, чтобы проверить страницу 404, нет ли выходаили нет.основываясь на коде my, он должен возвращать true, но полученное значение - false .. что я сделал не так?

также, когда я запускаю приведенный ниже тест,

it('+++Capturing Snapshot of CampaignLanding', () => {
    const renderedValue = renderer.create(<CustomProvider><CampaignLanding {...LocalProps} /></CustomProvider>).toJSON()
    expect(renderedValue).toMatchSnapshot();
  });

показывает следующую ошибку,

Инвариантное нарушение: Вы не должны использовать <Switch> за пределами <Router>

Не могли бы вы дать предложение?

...