我的组件MapView
来自react-native-maps
。我想测试我在我的组件的MapView.fitToSuppliedMarkers()
内调用componentDidUpdate
。
我正在使用enzyme
和jest
进行测试。
我的测试代码:
componentDidUpdate() {
//some other code
this.refs.map.fitToSuppliedMarkers(/* some parameters */);
}
但我在如何使用this.refs
和enzyme
jest
访问和监视// Arrange
var coll = new GlobalFilterCollection();
// Act
FilterConfig.RegisterGlobalFilters(coll);
var authorized = coll.Any(x => x.Instance is AuthorizeRedirect);
// Assert
Assert.IsTrue(authorized);
。
答案 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);
});