我正在尝试使用Quasar提供的useMeta
组件对Vue & Quasar页面的Meta内容进行单元测试更新
我的测试如下,我有一个UseMetaComponent
mock vue组件,它在一个mock App
组件中创建。UseMetaComponent
加载,因为wrapper.html()
控制台日志输出“Component Added”。
但是,Meta标记不会更新。我已经确认此代码在浏览器中可以正常运行。
installQuasarPlugin();
const UseMetaComponent = {
name: 'UseMetaComponent',
template: `
<div>Component Added</div>
`,
setup() {
useMeta({
title: 'New Title',
meta: {
description: {
name: 'description',
content: 'test',
},
},
});
},
};
const App = {
components: {
UseMetaComponent,
},
template: `
<!DOCTYPE html>
<html>
<head>
<title>Initial Title</title>
</head>
<body>
<div id="q-app">
<use-meta-component />
</div>
</body>
</html>
`,
};
describe('QuasarMetaHandler', (): void => {
const wrapper = mount(App);
console.log(wrapper.html());
it('defaults title Site Name', (): void => {
const title = document.getElementsByTagName('title');
console.log(title);
});
});
有没有一种方法来测试Meta组件的更新?
2条答案
按热度按时间gkl3eglg1#
我会使用Vue的
nextTick
函数。它允许您等待DOM在响应式数据更改后更新。这可以帮助确保测试在Vue有机会对更改做出React后检查更新后的Meta标签。下面是如何更新测试以等待更改:
另外:
1.根据Quasar的useMeta实现和整体设置,您可能需要调整测试以适应应用程序的实际行为。
1.如果您仍然面临问题,请考虑添加一个专门为处理head Meta标签而设计的包(如vue-meta),并查看它是否为测试这些场景提供更好的支持。
luaexgnf2#
使用Vue Test Utils测试Meta组件的更新可能有点棘手,因为元更新通常由浏览器管理,不能通过DOM直接访问。下面是一种在场景中测试Meta组件更新的潜在方法: