这是我要模拟的类星体组件的代码
emits: [
"buyer-protection",
...useDialogPluginComponent.emits
]
但是我得到以下错误:
TypeError: _quasar.useDialogPluginComponent.emits is not iterable
我想模拟类星体模块中的useQuasar
和usePluginDialogComponent
。我试着用这种方式嘲笑他们:
jest.mock('quasar', () => ({
useDialogPluginComponent: () => ({
emits: []
}),
useQuasar: () => ({
platform: {
is: {
desktop: true
}
}
})
}))
我如何模拟这些类星体的成分?
我也试着模仿useDialogPluginComponent。但是我意识到installQuasarPlugin()会处理所有Quasar插件,所以我不需要自己模拟任何插件。
但是它必须通过挂载来创建实例,不要使用shallowMount
,即确保dialogRef = vue.ref(null)
将捕获q-dialog。
对于我的例子,我想检查' ondialgok '已被调用,但我不能通过spyOn跟踪' ondialgok ',所以我检查wrapper.vm
发出。
expect(vueWrapper.emitted()).toHaveProperty('ok');
。
我不知道为什么使用edialogplugincomponent既是函数实例又是对象实例。为了解决这个问题,我定义了一个函数,并给它赋值了一个对象。
jest.mock("quasar", () => {
let t1 = () => {
return {
dialogRef: {},
onDialogHide: () => {},
onDialogOK: () => {},
onDialogCancel: () => {}
}
};
t1.emits = ['ok', 'hide'];
return {
useQuasar: () => ({
platform: {
is: {
Mobile: true,
},
},
}),
useDialogPluginComponent: t1
}
});