首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当使用react-intl FromattedMessage时,如何使用getByText?

当使用react-intl FromattedMessage时,如何使用getByText?
EN

Stack Overflow用户
提问于 2021-04-08 02:46:22
回答 1查看 119关注 0票数 0

当文本在react-intl的<FormatedMessage />中时,react-native-testing-library的getByText方法似乎找不到文本

代码语言:javascript
复制
const messages = {
   SOME_KEY: 'some key'
}

const { getByText } = render(
   <IntlProvider key={'en'} locale={'en'} messages={messages}>
     <Text>
        <FormattedMessage id={'SOME_KEY'} />
     </Text>
   </IntlProvider>
)

  expect(getByText('some key'));

在这种情况下,getByText返回null。

EN

回答 1

Stack Overflow用户

发布于 2021-04-08 02:46:22

所以我试着修复它并创建一个公关,但到目前为止还没有成功,总之,我找到了一个变通的办法。当您使用RTL测试您的组件时,您可能使用intl-provider包装您的组件。大概是这样的:

代码语言:javascript
复制
const { getByText } = render(<IntlProvider><MyComponent /> </IntlProvider>

因此,为我解决这个问题并允许我使用getByText的方法是:

代码语言:javascript
复制
import { Text } from 'react-native';

const { getByText } = render(<IntlProvider textComponent={Text}><MyComponent /> </IntlProvider>

添加textComponent={Text}会强制FormattedMessage组件使用文本作为包装器,而不是默认的React.Fragment。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66992349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档