这里是我试图用反应测试一个简单的组件原生0.39和玩笑18:如何测试使用Jest导入自定义本地模块的React Native组件?
// index.ios.js
import React, { Component } from 'react';
import { AppRegistry, NativeModules, View } from 'react-native';
export default class TestProject extends Component {
componentDidMount() {
NativeModules.TestModule.test();
}
render() {
return <View style={{ flex: 1 }} />;
}
}
AppRegistry.registerComponent('TestProject',() => TestProject);
这里是TestModule及其test
方法:
// ios/TestProject/TestModule.m
#import "TestModule.h"
@implementation TestModule
RCT_EXPORT_MODULE();
RCT_EXPORT_METHOD(test){
NSLog(@"This is a test");
}
@end
下面的测试失败,出现错误TypeError: Cannot read property 'test' of undefined
:
// __tests__/index.ios.js
import 'react-native';
import renderer from 'react-test-renderer';
import React from 'react';
import Index from '../index.ios.js';
it('renders correctly',() => {
const tree = renderer.create(
<Index />
);
});
我已经阅读如何Mock native modules using jest.mock的玩笑文档,但我ST不知道如何扩展Jest的NativeModules模拟以包含上面的TestModule类。
谢谢!传递给'beforeEach'的函数缺少一个闭合大括号,但除此之外就像一个魅力。我也选择使用'beforeAll',因为这个设置只需要运行一次,而不是在每个规范之前运行。 – andybangs
太棒了,我添加了缺少的大括号。 – rgoldfinger