模拟来自 Google Places API 的 place_changed 事件

问题描述 投票:0回答:1

我已将地点自动完成功能添加到我的 React 项目的输入中。

const onPlaceChange = () => {
    let address = autoCompleteService.current.getPlace();
    onAddressChange(address);
}

autoCompleteService.current = new google.maps.places.Autocomplete(document.getElementById(id), options);

autoCompleteService.current.addListener("place_changed", onPlaceChange);

我正在尝试使用react-testing-library编写单元测试,但我无法触发

place_changed
事件。我试过了

fireEvent(addressInput, createEvent('place_changed', addressInput, {target: {value: "123 fake st."}}))

其中addressInput是输入DOM元素,但这似乎不起作用。任何帮助将不胜感激。

reactjs google-maps react-testing-library
1个回答
0
投票

fireEvent
不起作用,因为该事件是扩展
google.maps.MVCObject
的 Autocomplete 类上的自定义事件的一部分。

基本上

addListener !== addEventListener

我在 https://www.npmjs.com/package/@googlemaps/jest-mocks 有一组 Google 地图的部分模拟。不过,模拟库中似乎缺少 MVCObject.trigger 。但这可能会让你更接近。

© www.soinside.com 2019 - 2024. All rights reserved.