У меня есть выбор 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)
waitFor
при проверке, был ли он вызван? - person WebbH   schedule 02.07.2021waitFor
и без, в обоих случаях тест не дает мне сказать:expect(jest.fn()).toHaveBeenCallesTimes(expected) Expected number of calls: 1 Received number of calls: 0
- person L.Gashi   schedule 02.07.2021