У меня проблема с фиктивной функцией window.location.replace в @ vue / test-utils и JEST. Я почти уверен, что правильно смоделировал функцию, но JEST не видит вызов. Это фрагмент кода, который я пытаюсь проверить:
// function called by response interceptor
const redirectToLogin = async () => {
try {
VueCookie.delete('jwt')
const url = localStorage.getItem('base-url') || window.location.origin
window.location.replace(url + '/jwt/token');
console.log(window.location.replace) //it prints [Function: mockConstructor]
} catch (e) {
console.log(e)
}
}
И часть моего теста:
const location = {
origin: 'http://origin',
replace: jest.fn()
}
delete global.window.location
delete global.window.localStorage
global.window = Object.create(window)
global.window.location = location
global.window.localStorage = {
getItem: jest.fn(),
setItem: jest.fn()
}
api.interceptors.response.handlers.rejected[0]({ response: { data: { error: 'unauthorized', base_url: 'http://base' } } }) // calling interceptor
expect(location.replace).toHaveBeenCalledWith('someurl')
, и я получаю
Ожидаемый макетфункция, которая должна быть вызвана с помощью: ["someurl"] Но она не была вызвана.