javascript - Vue.js + Nuxt.js - 为什么当我对 head() 方法进行单元测试时我的计算属性未定义?
问题描述
我有一个带有head()
方法的 Vue.js + Nuxt.js 组件:
<script>
export default {
name: 'my-page',
head() {
return { title: `${this.currentPage}` };
},
...
}
</script>
currentPage
是一个计算属性。
当我运行我的应用程序时,组件运行正确,并将页面标题设置为正确的值。
当我从 Jest + Vue Test Utils 单元测试中运行此代码时,代码会失败:
it('should set the title to "my page"', () => {
const options = {
computed:{
currentPage: () => {
return 'My Title';
}
}
};
const target = shallowMount(MyPage, options);
const actual = target.vm.$options.head();
expect(actual.title).to.equal("My Title");
});
测试失败并显示以下消息:
AssertionError:预期未定义等于“我的标题”
即使我模拟它,为什么计算属性未定义?
head()
我通过调用该方法的事实target.vm.$options
与它有什么关系吗?
解决方案
您需要将上下文传递到您的头部调用中。
const actual = target.vm.$options.head.call(target.vm);
推荐阅读
- typescript - Typescript:如何扩展嵌套字段的接口并为对象赋值?
- uproot - Uproot:AttributeError:“模块”对象没有属性“打开”
- python - 提取月份数据并找到一列的平均值
- nginx - nginx上传文件并改名
- angular - 生成
的价值优先 的占位符 - angular - Angular 6 复选框多过滤器
- python - 根据最近更新的数据框行分离?
- php - 如果字段具有空白值,Codeigniter 表单验证器所需的规则第二次不起作用
- html - HTML日期控件的日期时间格式
- java - 使用带有 MapStruct 的构建器将空值映射到默认值