8

我已经研究了 react-intl 的建议,但它没有留下任何关于酵素的明确文档。

这就是我一直在尝试编写测试的方式。

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的对象。需要存在于组件祖先中。

我查看了他们的仓库,他们似乎已经使它与“react-addons-test-utils”一起工作。

难道我做错了什么?

4

3 回答 3

4

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

将 react-intl 对象注入到已安装的 Enzyme 组件中进行测试

您将能够import { shallowWithIntl } from 'intl-helper'然后使用shallowWithIntl()而不是酶的shallow().

于 2016-05-03T15:05:32.020 回答
2

我通过使用让它工作

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

反而。

于 2016-05-03T08:37:50.243 回答
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()

于 2019-12-06T11:42:25.347 回答