如何在React中侦察refs?

时间:2018-01-04 21:04:53

标签: reactjs react-native jestjs enzyme

我的组件MapView来自react-native-maps。我想测试我在我的组件的MapView.fitToSuppliedMarkers()内调用componentDidUpdate

我正在使用enzymejest进行测试。

我的测试代码:

componentDidUpdate() {
    //some other code
    this.refs.map.fitToSuppliedMarkers(/* some parameters */);
}

但我在如何使用this.refsenzyme jest访问和监视// Arrange var coll = new GlobalFilterCollection(); // Act FilterConfig.RegisterGlobalFilters(coll); var authorized = coll.Any(x => x.Instance is AuthorizeRedirect); // Assert Assert.IsTrue(authorized);

1 个答案:

答案 0 :(得分:1)

问题是我依赖于不允许测试的弃用字符串引用。有一次,我升级到callback refs我能够使用原型对象监视refs。

受测试代码

componentDidUpdate() {
    //some other code
    this.map.fitToSuppliedMarkers(/* some parameters */);
}

render() {
  return (
    <MapView
      ref={(map) => { this.map = map; }}
    >
    </MapView>
  );
}

单元测试

it('zooms in on markers when receiving new data', () => {
  Map.prototype.map = {
    fitToSuppliedMarkers: function () { }
  };

  const spy = spyOn(Map.prototype.map, 'fitToSuppliedMarkers');

  const testee = shallow(
    <Map markers={[]} />
  );

  const withAnimation = true;

  testee.setProps({ markers: markers });

  expect(spy).toHaveBeenCalledWith(markers, withAnimation);
});