如何解决axios + axios-mock-adapter + redux-mock-store + redux-thunk +单元测试案例
我正在为axios api编写测试。 这是我的方法。
const getEmployees = () => (dispatch) => {
dispatch(showLoader())
console.log(' ------------ calling ------- ')
return axios
.get('http://localhost:4000/api/employees')
.then((res) => {
console.log(' ------------ calling ----success--- ')
responseHandler(dispatch,res,getEmployeesAction)
// dispatch(getEmployeesAction(res.data))
})
.catch((error) => {
console.log(' ------------ calling ----failure--- ')
apiErrorHandler(dispatch,error)
})
}
和我的单元测试相同的方法。
import configureMockStore from 'redux-mock-store'
import thunk from 'redux-thunk'
import axios from 'axios'
import MockAdapter from 'axios-mock-adapter'
import { getEmployees } from '../../api/employees.api'
import { getEmployeesAction } from '../../actions/employees.action'
const middlewares = [thunk]
const mockStore = configureMockStore(middlewares)
let store = mockStore({})
const mock = new MockAdapter(axios)
describe('In employees.api.js ',() => {
beforeEach(() => {
store.clearactions()
mock.restore()
// mock.reset()
// mock.resetHistory()
})
it('fetches successfully employees',async () => {
mock.onGet('http://localhost:4000/api/employees').reply(200,{
response: {
data: 'abcde'
}
})
console.log(' === 1 --- ')
store.dispatch(getEmployees()).then(() => {
console.log(' ---- 2 ----- ')
let expectedActions = [getEmployeesAction({ sample: 'sample data' })]
expect(store.getActions()).toEqual(expectedActions)
})
})
})
在上述情况下,在测试文件中,在情况下没有控制台。它总是通过我添加的期望。我不确定thunk和axios的正确书写方式。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。