【发布时间】:2021-05-20 05:22:53
【问题描述】:
我正在尝试对使用 Axios 帮助程序实例进行异步调用的函数进行单元测试。我尝试了多种方法来尝试对此进行单元测试,但我似乎无法在网上找到任何有帮助的材料。我已经被这个问题困扰了几天,这令人沮丧,所以任何帮助都将不胜感激!下面是 Axios Helper 文件(api.js)
api.js
import axios from 'axios'
const API = (token = null) => {
let headers = {
'Content-Type': 'application/json',
'Ocp-Apim-Subscription-key': process.env.NEXT_PUBLIC_API_HEADER_SUBSCRIPTION_KEY
}
if (token) {
const tokenHeader = { Authorization: 'Bearer ' + token }
headers = { ...headers, ...tokenHeader }
}
const url = process.env.NEXT_PUBLIC_API_BASE_URL
const API = axios.create({
baseURL: url,
headers
})
return API
}
export default API
模拟 API
export default {
post: jest.fn(() =>
Promise.resolve({
data: {}
})
),
get: jest.fn(() =>
Promise.resolve({
data: {}
})
)
}
动作文件
export const initiate2FA = (destinationValue) => async () => {
const twoFactorAuth = destinationValue
const res = await API().post('/foo', {
Destination: twoFactorAuth
})
return res
}
Action.test.js
import API from 'api/api'
import { initiate2FA } from 'actions/userActions'
jest.mock('api/api')
const mockedAxios = API
const dispatch = jest.fn()
describe('Initiate2FA function', () => {
it('bar', async () => {
mockedAxios.get.mockImplementationOnce(() => Promise.resolve({ status: 200 }))
const t = await dispatch(initiate2FA('test@test.com'))
console.log(t)
})
})
我对上述测试文件的问题是它返回一个匿名函数,我不知道如何处理它以通过单元测试。测试的目标是确保调用该函数。我不确定我是否以正确的方式处理这个问题,还是应该改变我的方法。
同样,任何建议都会很棒!
【问题讨论】:
标签: react-redux jestjs react-testing-library