JEST window.location.replace фиктивная функция не вызывается - PullRequest
0 голосов
/ 17 октября 2019

У меня проблема с фиктивной функцией 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"] Но она не была вызвана.

...