У меня есть Jest-тест, который создает компонент-редукс, часть этого компонента вызывает несколько саг, которые, в свою очередь, вызывают ряд функций ajax.
Одна из этих функций ajax использует компонент CoreApiиз https://github.com/kineticdata/react-kinetic-core другая находится в локальной функции.
Я смоделировал обе эти функции в / src / __ mocks__ - вызывается mocks для CoreApi. Мок, которые у меня есть для моей собственной функции, нет, и базовые функции вызываются.
Мой тест:
import React from 'react';
import {fireEvent, cleanup, waitForDomChange, wait} from '@testing-library/react'
import {renderWithRedux} from '../../../../helpers/testSetup'
import "@testing-library/jest-dom/extend-expect"
import {Container} from '../container'
// test setup
afterEach(cleanup)
beforeEach(() => {
// fetch.resetMocks();
});
// consts
const match = {
params: {
id: "123"
}
}
// tests
describe('Timeline Container', () => {
it('Rendering timeline', async () => {
const {getAllByText,getByTestId,findByTestId,store} = renderWithRedux(<Container match={match} />)
expect(getAllByText("Loading request")[0]).toBeVisible()
// 2. Act
// 3. Assert
})
})
Мой макет для CoreApi (который вызывается из саги Компоненты контейнера))
const CoreAPI = {}
function fetchSpace() {
console.log("in space mock")
return (
{
"space": {
"attributes": [{"a":"b"}]
}
}
)
}
CoreAPI.fetchSpace = fetchSpace
export { CoreAPI }
Мой макет для моих локальных функций:
const getHeader = () => {
console.log("in the mock header")
return(
JSON.stringify({
"request": {
"title": "TEST"
},
"error": false,
"errorLevel": 0
})
)
}
export const JspAccess = {
getHeader
}
Где моя настоящая функция выглядит так:
const getHeader = (id) => {
console.log("doing fetch call for "+id)
return fetch("/api/?callback=lookup.json&id="+id",
{
method: 'GET',
credentials: 'include',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
}
}
)
}
export const JspAccess = {
getHeader
}
Но мой вывод Jest показываетconsole.logs из реальной функции не mock, но использует mock для моих вызовов CoreApi:
PASS src/components/app/__tests__/Container.test.js
● Console
console.log src/lib/api/jspAccess.js:2
doing fetch call for 123
console.log src/__mocks__/react-kinetic-core.js:8
in space mock
Я не понимаю, находятся ли мои mock в одном и том же месте, почему одно поднято, а другоене. Есть идеи?!