如何设置React Native集成测试

3
react-native doc中,它说要检查UIExploreIntegrationTest。看起来需要在Xcode上进行一些设置,因为它使用Objective C代码(*.m)。我对Obj-C测试很陌生..请问如何在Xcode上设置集成测试?
1个回答

1

通过一些猜测,我成功地找到了几个步骤来运行iOS上的集成测试。但是我仍在努力弄清楚如何让Android集成测试正常工作。

请复制RN github上的IntegrationTests.js文件,创建一个名为Tests.js的新JS文件。

将这两个文件放置在项目的根目录中。然后通过更改IntegrationTests.js文件,将所有的requires更改为刚刚创建的文件的一个require语句:require('./Tests')

以下是您的Tests.js文件的基本实现:

'use strict';

var React = require('react');
var ReactNative = require('react-native');

var {
  Text,
  View,
} = ReactNative;
var { TestModule } = ReactNative.NativeModules;

var Tests = React.createClass({
  shouldResolve: false,
  shouldReject: false,
  propTypes: {
    RunSampleCall: React.PropTypes.bool
  },
  getInitialState() {
    return {
      done: false,
    };
  },
  componentDidMount() {
    if(this.props.TestName === "SomeTest"){
      Promise.all([this.SomeTest()]).then(()=>
      {
        TestModule.markTestPassed(this.shouldResolve);
      });
      return;
    }
  },
  async SomeTest(){
    var one = 1;
    var two = 2;
    var three = one + two;
    if(three === 3){
      this.shouldResolve = true;
    }else{
      this.shouldResolve = false;
    }
  }
  render() : ReactElement<any> {
    return <View />;
  }
});

Tests.displayName = 'Tests';

module.exports = Tests;

这是一个在Xcode中实现Tests.m文件的基本示例。
#import <UIKit/UIKit.h>
#import <XCTest/XCTest.h>

#import <RCTTest/RCTTestRunner.h>
#import "RCTAssert.h"

#define RCT_TEST(name)                  \
- (void)test##name                      \
{                                       \
[_runner runTest:_cmd module:@#name]; \
}

@interface IntegrationTests : XCTestCase

@end

@implementation IntegrationTests
{
  RCTTestRunner *_runner;
}

- (void)setUp
{
  _runner = RCTInitRunnerForApp(@"IntegrationTests", nil);
}

- (void)test_SomeTest
{
  [_runner runTest:_cmd
            module:@"Tests"
      initialProps:@{@"TestName": @"SomeTest"}
configurationBlock:nil];
}

@end

您需要将node_modules/react-native/Libraries/RCTTest/RCTTest.xcodeproj中的RCTTest添加到库中。然后,您需要将您添加的该项目的产品libRCTTest.a拖到常规选项卡中的主目标的Linked Frameworks and Libraries中。

^^ 该路径可能略有不正确

然后,您需要编辑您的方案并设置一个环境变量CI_USE_PACKAGER为1

因此,如果您完成所有这些步骤,您应该可以进行简单的测试运行和通过。之后扩展应该相当容易。如果我的回答有点粗糙,请告诉我您是否有任何问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接