UseEffect не возвращает ответ onMount - PullRequest
0 голосов
/ 07 марта 2020

Я запускаю тест при загрузке страницы и обновляю sh. Он работает хорошо, но тест возвращает 0;

ниже - мой код;

useEffect(() => {
    setLoading(true);
    if (navigator.geolocation) {


    navigator.geolocation.getCurrentPosition(getPosition);
    } else {
      setError("Your browser doesn't support geolocation");
    }
    const fetchLocations = async () => {
      if(currentPos.latitude!==undefined && currentPos.longitude!==undefined) {
          try {
          const response =  await instance
              .get("/explore", {
                params: {
                  ll: `${currentPos.latitude},${currentPos.longitude}`
                }
              })
            console.log(response.data.response.groups[0].items);
            setLocations(response.data.response.groups[0].items);
            setError('')
            setLoading(false)
          } catch (error) {
            setError('Error getting data');
            setLoading(false)
          }
        }
      }
    fetchLocations()
      }, [currentPos.latitude, currentPos.longitude]);

и мой тест: то, что происходит здесь, доступно при первом монтировании loading.... Ожидается, что при извлечении данных из API toHaveBeenCalledTimes будет равно 1 вместо возврата 0.

it("renders location venues on currentlocation ", async () => {
  const {getByText, container} = render(<Venues />);
  getByText('Loading...')

  await axiosMock.get.mockResolvedValueOnce(() =>
    Promise.resolve({ data: {response } })
  )

  expect(axiosMock.get).toHaveBeenCalledTimes(0)
  await waitForElement(() =>
    container,
    expect(axiosMock.get).toHaveBeenCalledTimes(1)
  );
});

Как я могу исправить этот тест и заставить его работать правильно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...