为什么如果我创建了一个模拟我仍然会出错?
Why if i created a mock i am still getting error?
我正在做测试,我在那个测试中做了一个测试我为一个假函数创建了一个模拟
jest.mock('@/services/myService', ()=>({getAvailables: jest.fn().mockReturnValue()}))
在我的组件中运行那个函数
onMounted(async () => {
const answer = await getAvailables1()
const answer = await getAvailables2()
const answer = await getAvailables3()
但我仍然收到此错误
(node:81921) UnhandledPromiseRejectionWarning: TypeError: (0, _ContractService.getAvailables1) 不是函数
(节点:81921)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。这个错误要么是在没有 catch 块的情况下在异步函数内部抛出,要么是因为拒绝了一个没有用 .catch() 处理的承诺。要在未处理的承诺拒绝时终止节点进程,请使用 CLI 标志
如果我像这样先放 getAvailables2
onMounted(async () => {
const answer = await getAvailables2()
const answer = await getAvailables1()
我收到这个错误
(节点:81921)UnhandledPromiseRejectionWarning:TypeError:(0,_ContractService.getAvailables2)不是函数
如果我像这样先放 getAvailables3
onMounted(async () => {
const answer = await getAvailables3()
const answer = await getAvailables2()
我收到这个错误
(节点:81921)UnhandledPromiseRejectionWarning:TypeError:(0,_ContractService.getAvailables3)不是函数
我也尝试 mockResolvedValue
,但没有用
export const getAvailables = async () => {
let response
let error
try {
response = await getData()
} catch (err) {
error = err
throw err
}
return { response, error }
}
getAvailables()
是始终 return 承诺的异步函数。
因此,为了模拟该函数,您需要 return 具有成功或拒绝值的模拟承诺。
以下是模拟 return 成功承诺的函数的示例。
jest.mock('@/services/myService', () => ({
getAvailables: jest.fn().mockResolvedValue(true)
}))
看起来你想要一个 mock partial:
jest.mock('@/services/myService', () => {
const originalModule = jest.requireActual('@/services/myService');
return {
__esModule: true,
...originalModule,
getAvailables1: () => Promise.resolve({ foo: 'bar' }),
getAvailables2: () => Promise.resolve({ foo: 'baz' }),
getAvailables3: () => Promise.resolve({ foo: 'bad' }),
/* any other method of your service that gets called */
};
});
这将在模拟中模拟提供的功能,而服务的其余部分将像原始服务一样运行。
我正在做测试,我在那个测试中做了一个测试我为一个假函数创建了一个模拟
jest.mock('@/services/myService', ()=>({getAvailables: jest.fn().mockReturnValue()}))
在我的组件中运行那个函数
onMounted(async () => {
const answer = await getAvailables1()
const answer = await getAvailables2()
const answer = await getAvailables3()
但我仍然收到此错误
(node:81921) UnhandledPromiseRejectionWarning: TypeError: (0, _ContractService.getAvailables1) 不是函数 (节点:81921)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。这个错误要么是在没有 catch 块的情况下在异步函数内部抛出,要么是因为拒绝了一个没有用 .catch() 处理的承诺。要在未处理的承诺拒绝时终止节点进程,请使用 CLI 标志
如果我像这样先放 getAvailables2
onMounted(async () => {
const answer = await getAvailables2()
const answer = await getAvailables1()
我收到这个错误 (节点:81921)UnhandledPromiseRejectionWarning:TypeError:(0,_ContractService.getAvailables2)不是函数
如果我像这样先放 getAvailables3
onMounted(async () => {
const answer = await getAvailables3()
const answer = await getAvailables2()
我收到这个错误 (节点:81921)UnhandledPromiseRejectionWarning:TypeError:(0,_ContractService.getAvailables3)不是函数
我也尝试 mockResolvedValue
,但没有用
export const getAvailables = async () => {
let response
let error
try {
response = await getData()
} catch (err) {
error = err
throw err
}
return { response, error }
}
getAvailables()
是始终 return 承诺的异步函数。
因此,为了模拟该函数,您需要 return 具有成功或拒绝值的模拟承诺。
以下是模拟 return 成功承诺的函数的示例。
jest.mock('@/services/myService', () => ({
getAvailables: jest.fn().mockResolvedValue(true)
}))
看起来你想要一个 mock partial:
jest.mock('@/services/myService', () => {
const originalModule = jest.requireActual('@/services/myService');
return {
__esModule: true,
...originalModule,
getAvailables1: () => Promise.resolve({ foo: 'bar' }),
getAvailables2: () => Promise.resolve({ foo: 'baz' }),
getAvailables3: () => Promise.resolve({ foo: 'bad' }),
/* any other method of your service that gets called */
};
});
这将在模拟中模拟提供的功能,而服务的其余部分将像原始服务一样运行。