Javascript 如何在jest测试中重新配置libs?
在Javascript 如何在jest测试中重新配置libs?,javascript,mocking,jestjs,Javascript,Mocking,Jestjs,在prepareRequestHeadersI导入。/redux/storeConfigure 如何使用其他实现重新配置。/redux/storeConfigure 编辑: 像这样的事情应该解决: /* fetch.js */ import { store } from '../app' export const prepareRequestHeaders = () => { const headers = { Accept: 'application/json',
prepareRequestHeaders
I导入。/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
当您分配给Jest mock(
Jest.fn()
)时,您可以随时更改其返回值。它的名字必须以mock
开头,因为mock-highting你知道我为什么会有ReferenceError:mockGetState没有在src/api/api.test.js:4:16
中定义吗?啊,它在提升。。。如果您可以发布一些fetch.js
和。/redux/storeConfigure.js
的最低版本,我可以在运行它之后向您粘贴一个完整的示例:)我在上面添加了有问题的代码。提前感谢;)@SimenB^storeConfigure
只是提供了一个redux存储?
/* 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
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
})
})