Испытанная функция не вызывается в тесте с использованием Jest для проверки реакции - PullRequest
0 голосов
/ 27 ноября 2018

Мой тест на обработку ошибок в приложении реагирования не работает, и я не уверен, почему.Код, который я тестирую, находится в main.js, и когда я тестирую функциональность в браузере, заставляя api отправить ответное сообщение об ошибке, он работает.Я также проверил, что тестируемый код попадает в правильный блок кода "case 404" при тестировании с использованием вызовов console.log, поэтому проблема заключается в насмешке над displayErrorModal.

//main.js (code to be tested)
import React from 'react'
import { SOMETHING_WENT_WRONG, FORBIDDEN, NOT_FOUND, NO_RESPONSE, 
REQUEST_FAILED } from './util/error-message-types'
import displayErrorModal from './util/display-error-modal'
import { get } from 'axios'
import { render } from 'react-dom'
import { Provider } from 'react-redux'

import App from './app'
const patientId = window.requestParameters.patient_id

get('/api/v1/patients/' + patientId + '/views/multi-episode-summary', 
{
patientId
}).then( //do some stuff
).then( // do some stuff
).catch((error) => {
if (error.response) { //response status code not 2xx
    switch (error.response.status) {
        case 403:
            displayErrorModal('Error', FORBIDDEN)
            break;
        case 404:
            displayErrorModal('Error', NOT_FOUND)
            break;
        case 500:
        default:
            displayErrorModal('Error', SOMETHING_WENT_WRONG)
            break;
    }
} else if (error.request) {//no response received
    displayErrorModal('Error', NO_RESPONSE)
} else {//error in making request
    displayErrorModal('Error', REQUEST_FAILED)
}
})

// display-error-modal.js within util folder
import ErrorModal from '../../../error-modal'
import React from 'react'
import { render } from 'react-dom'

export default (headerText, bodyText) => {
    return render(
        <ErrorModal
            header={headerText}
            body={bodyText}
        />,
        document.getElementById('multiple-episode-view-app')
    )
}

// main.test.js within a __tests__ folder
import React from 'react'
import axios from 'axios'
import displayErrorModal from '../util/display-error-modal'
import { SOMETHING_WENT_WRONG, FORBIDDEN, NOT_FOUND, NO_RESPONSE, 
REQUEST_FAILED } from '../util/error-message-types'

const { it, expect } = global

jest.mock('axios')
jest.mock('../util/display-error-modal')

describe('Multi Episode Summary App', () => {
    it('displays error modal for patient not found', () => {
        window.requestParameters = { patient_id: 100019 }
        const errorResponse = new Error('Patient not found.')
        errorResponse.response = { status: 404 }
        axios.get.mockRejectedValue(errorResponse)
        require('../main')
        expect(displayErrorModal).toHaveBeenCalledWith('Error', NOT_FOUND)
    })
 })

КогдаЯ запускаю тест, который завершается неудачно с сообщением «Ожидается, что фиктивная функция была вызвана с: ... Но она не была вызвана».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...