Как проверить, было ли вызвано предупреждение при тестировании Jest React с использованием Typescript?

У меня есть выбор HTML с некоторыми параметрами, которые, когда я нажимаю кнопку, отправляются на сервер. В зависимости от ответа отображается предупреждение. Метод выглядит следующим образом:

 const sendOrder = async (json : string) => {
        const request = await fetchUrl("<irrelevant url>", "POST", json);
        if(request.status === 200){
            const order = await request.json();
            alert(`Created Order #${order.data.id}`)
        }else{
            alert("Order failed")      
        }
    } 

Теперь я издевался над сервером с помощью msw, и мой тест выглядит примерно так:

it('should create an order', async () => {

        render(<ArticleList />);
        render(<ShoppingCart afterSubmit={()=> {}}/>)

        const articlesList = getNullSafeElement('articles');
        await waitFor(() => {
            expect(articlesList.children.length).toBe(2);
        })
        const orderButton = getNullSafeElement('submitBtn');
        const shoppingCart =  document.querySelector('#cart') as HTMLSelectElement; 
        const addressInput = document.querySelector('#address') as HTMLInputElement;

        addressInput.value = "testAddress"
        expect(shoppingCart.options.length).toBe(0);
        fireEvent.click(articlesList.children[0]);
        expect(shoppingCart.children.length).toBe(1);
        fireEvent.click(orderButton);
        
      });

Я точно знаю, что этот тест работает, как и ожидалось, и что запрос определенно отправляется на издевательский сервер fireEvent.click(orderButton). Однако, если я сейчас хочу сделать что-то подобное expect(global.alert).toHaveBeenCalledTimes(1), это не сработает. Теперь я знаю, что мне нужно издеваться над вызовом, и я видел несколько сообщений на SO об этой проблеме.

Имитация или проверить, сработало ли окно.alert

Тестовое оповещение в React Native

Но ни global.alert = jest.fn(), ни jest.spyOn(global, 'alert') не получилось. Оба приводят к 0 вызовам.

Итак, мой вопрос: как я могу проверить, был ли вызван alert() в моем тесте?

(Я создаю интерфейс, используя приложение create-реагировать с шаблоном машинописного текста и тестируя с помощью Jest)


person L.Gashi    schedule 01.07.2021    source источник
comment
Вы использовали waitFor при проверке, был ли он вызван?   -  person WebbH    schedule 02.07.2021
comment
Я пробовал с waitFor и без, в обоих случаях тест не дает мне сказать: expect(jest.fn()).toHaveBeenCallesTimes(expected) Expected number of calls: 1 Received number of calls: 0   -  person L.Gashi    schedule 02.07.2021