jest.mock('../redux/storeConfigure', () => () => ({
getState: () => ({ auth: { token: 'TEST_TOKEN' } })
}))
import { prepareRequestHeaders } from './fetch'
describe('prepareRequestHeaders', () => {
it('returns header with Authorization if token is set', () => {
expect(prepareRequestHeaders()['Authorization']).toBe('Bearer TEST_TOKEN')
})
it('returns header without Authorization if token is not set', () => {
?????
})
})
В prepareRequestHeaders импортирую ../redux/storeConfigure
Как убрать ../redux/storeConfigure с другой реализацией?
Обновлено:
/* fetch.js */
import { store } from '../app'
export const prepareRequestHeaders = () => {
const headers = {
Accept: 'application/json',
'Content-Type': 'application/json'
}
const { token } = store.getState().auth
if (token) {
headers['Authorization'] = `Bearer ${token}`
}
return headers
}
/* app.js */
import storeConfigure from './redux/storeConfigure'
export const store = storeConfigure()
/* Directories strucutre */
- redux
- storeConfigure.js
- api
- fetch.js
- api.test.js
app.js



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Примерно так должно получиться:
let mockGetState;
jest.mock('../redux/storeConfigure', () => () => {
mockGetState = jest.fn().mockReturnValue({ auth: { token: 'TEST_TOKEN' } })
return { getState: mockGetState }
})
import { prepareRequestHeaders } from './fetch'
describe('prepareRequestHeaders', () => {
it('returns header with Authorization if token is set', () => {
expect(prepareRequestHeaders()['Authorization']).toBe('Bearer TEST_TOKEN')
})
it('returns header without Authorization if token is not set', () => {
mockGetState.mockReturnValueOnce({auth: {token: 'SOMETHING_ELSE'}})
// make your assertion
})
})
Когда вы назначаете макет Jest (jest.fn()), вы можете изменить его возвращаемое значение, когда захотите. Название должно начинаться с mock из-за фиктивного подъема.
Ах, он поднимается ... Если вы можете опубликовать минимальную версию fetch.js и ../redux/storeConfigure.js, я могу вставить вам полный пример, который работает после его запуска :)
Я добавил код, о котором идет речь, выше. Заранее спасибо;) @SimenB ^
storeConfigure просто дает магазин redux?
ты знаешь, может, зачем мне
ReferenceError: mockGetState is not defined at src/api/api.test.js:4:16?