假设我想对这个实用函数进行单元测试,我使用的是Vue 3,但是这个代码在“正常”的js文件中,而不是sfc。
我怎么能那样做呢?
function getDynamicComponent() {
if (...) {
return defineAsyncComponent(() => import('../path/to/component-A.vue'))
} else {
return defineAsyncComponent(() => import('../path/to/component-B.vue'))
}
}
在这种情况下,我更喜欢模拟函数的实现并检查.toHaveBeenCalledWith(...)
,但我不能用import
来做,对吗?
附言:如果你能告诉我Jest或Vitest的语法,我会很感激
1条答案
按热度按时间fhity93d1#
作为对我评论的补充,您可以使用Jest来模拟该函数:
第一个
然后您可以测试defineAsyncComponent是否被调用:
使用toHaveBeenCalledWith会比较棘手,因为它使用toEqual,所以测试总是会失败
您可以在defineAsyncComponent函数上定义实作,以测试参数:
您也可以调用该函数并检查返回值,这是一个承诺,但此时您正在测试import()函数,因此我不认为它会为您的测试增加价值: