我已经查看了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;。
我做错了吗?
答案 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()