在我的项目中,我在Vue 3 ts的Mycomponent中使用了highcharts模块,它工作得很好。我还使用vitest添加了单元测试代码,以检查此组件是否工作正常。
但现在我得到了一个错误消息下面我的代码,我不知道我如何可以访问和检查highchart数据我虽然Mycomponent被挂载,但我没有编译器或渲染highchart模块.
你能给予我一些建议或链接检查,以解决这个问题?
谢谢!2谢谢!
Mycomponent.vue就像这样
script setup lang="ts">
interface Config {
name?: string
type: string
series: Array<any>,
headers?: Array<any>
}
const props = defineProps<Config>()
<template>
<highcharts :options="chartOptions"></highcharts>
</template>
我试着用vitest测试这个组件
我的规格ts
const wrapper = mount(Mycomponent, {
props : {
series: [{ name: 'delta', data: [500, 83, -200, -800, 228, 184] }],
type: 'column'
},
})
describe('Mycomponent', () => {
it('Mycomponent Highcharts', () => {
test('Chart data type should be set correctly', () => {
expect(wrapper.props().type).toBeTypeOf("string")
})
我得到了这样的错误
[Vue warn]: Failed to resolve component: highcharts
If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.
at <Mycomponent series= [ { name: 'delta', data: [ 500, 83, -200, -800, 228, 184 ] } ] type="column" ref="VTU_COMPONENT" >
at <VTUROOT>
这是我的主.ts
import HighchartsVue from 'highcharts-vue'
import Highchart from 'highcharts'
const app = createApp(App)
app.use(HighchartsVue)
app.use(Highchart)
app.mount('#app')
config.plugins.VueWrapper.install()
1条答案
按热度按时间cyvaqqii1#
你得到的警告表明,在Vitest环境中,Vue很难确定
highcharts
是原生HTML元素还是自定义组件。我认为一个快速的解决方法是将组件名称从单个单词(
<highcharts>
)更改为-
(如<highcharts-chart>
)。您可以按照文档中所述执行此操作:如果仅此方法不起作用,则可以为自定义组件添加附加条件:
或者,您可以尝试直接从
highcharts
导入Chart
组件,而不是注册highcharts
组件:当涉及到问题的第二部分(如何访问图表数据)时,您可以使用
ref
来创建添加对Highcharts对象的引用,在那里,您可以访问整个chart
示例。Demo:https://codesandbox.io/s/lucid-bas-rqqx93?file=/src/App.vue
API:https://api.highcharts.com/class-reference/Highcharts.Chart