用酶测试react-intl组分

时间:2016-04-26 13:27:18

标签: unit-testing reactjs enzyme react-intl

我已经查看了react-intl的建议,但它没有为enzyme留下任何明确的文档。

这就是我试图编写测试的方式。

import {IntlProvider} from 'react-intl';

const intlProvider = new IntlProvider({locale: 'en'}, {});
const intl = intlProvider.getChildContext();
const customMessage = shallow(<CustomMessage />, { options: { context: intl } });

但我一直收到错误

  

不变违规:[React Intl]无法找到所需的intl对象。需要存在于组件祖先中。

我查看了他们的回购邮件,他们似乎made it work使用了&#39; react-addons-test-utils&#39;。

我做错了吗?

3 个答案:

答案 0 :(得分:3)

我已经发布了类似问题的答案:

Injecting react-intl object into mounted Enzyme components for testing

您可以import { shallowWithIntl } from 'intl-helper'然后使用shallowWithIntl()代替Enzyme&#39; shallow()

答案 1 :(得分:0)

我使用

开始工作
const customMessage = shallow(<CustomMessage />, { context: intl });

代替。

答案 2 :(得分:0)

那就是我实现目标的方式:


import React from 'react';
import StandardFilterIntl, {StandardFilter} from 'bundles/components/Filter/StandardFilter';
import {mountWithIntl} from 'enzyme-react-intl';

const FilterComponent = mountWithIntl(<StandardFilterIntl {...standardFilterProps} />);
FilterComponent.find(StandardFilter).state()