使用Jest对ReactNative进行单元测试

时间:2016-08-25 09:24:34

标签: reactjs react-native jestjs

我正在搜索如何在我的应用程序中实现单元测试功能,但是可用的资源有限,是否有任何文档提供了在ReactNative应用程序中添加单元测试功能的分步指南。

因为大部分文档已经过时了,因为有人说我们需要模拟react-native和导入反应/插件,现在还没有。

现在React中没有添加ons文件....

2 个答案:

答案 0 :(得分:2)

我会按照官方Jest docs设置react-native的测试环境。

测试Redux / reducer应该没有区别。对于组件,您可以使用与react-native兼容的新snapshots测试方法。你可以在Jest仓库中看到一个小例子:https://github.com/facebook/jest/tree/master/examples/react-native

答案 1 :(得分:1)

虽然这已经有一段时间了,但是在使用React Native进行单元测试时,文档并不完整,但这里是我如何处理组件方法的测试,这可能是我使用的大部分内容。

以下是Jest中的典型示例:

it('handles onInputTextChanged', () => {
  const wrapper = shallow(<TuraltChat isAnimated={false} />);
  wrapper.instance().onInputTextChanged("The message has changed");
  expect(wrapper.state("text")).toBe("The message has changed");
});

instance()方法公开底层组件,然后您可以通常的方式调用它上面的方法。

即使它在所有DOM依赖项中都很烦人,我也使用了酶,它对组件级测试有很大帮助,因为我不需要担心所有嵌套组件。

import { shallow } from 'enzyme';
import toJson from 'enzyme-to-json';

...

it('renders initially', () => {
  const wrapper = shallow(<Composer />);
  const json = toJson(wrapper);
  expect(json).toMatchSnapshot();
});