У меня есть функция get
, которая упаковывает запрос xhr, который включает в себя успешный обратный вызов. Я пытаюсь создать тест, который проверяет, был ли вызван успешный обратный вызов.
Вот функция get
:
get: function(onSuccess, onFail){
var xhr = new XMLHttpRequest();
// ... open and send the request ... etc...
if(xhr.status === 200) {
onSuccess(xhr.reponse);
}
Функция get
доступна в области окна , Я могу запустить следующий код в браузере на странице и наблюдать успешное выполнение обратного вызова:
get(function(){console.log('success callback running')})
Пока я пытаюсь выполнить такой тест:
const jest = require('jest-mock');
it('runs the success handler when passing a success callback to get method', async () => {
const mockCallback = jest.fn(() => "success");
await page.evaluate((mockCallback) => {
window.get(mockCallback);
}, mockCallback);
await expect(mockCallback).toHaveBeenCalled();
});
Этот тест всегда терпит неудачу, говоря, что количество вызовов mockCallBack меньше 1.
Также интересно, если я изменю функцию get
, чтобы немедленно выполнить успешный обратный вызов, то я вижу ошибку, которая ' onSuccess 'не является функцией при запуске теста.
ie ..
get: function(onSuccess, onFail){
onSuccess();
// etc..
}