javascript - 无法使用vue和moment将参数传递给 Jasmine 中的按钮方法

标签 javascript vue.js vuejs2 jasmine karma-jasmine

我有一个 Vue 应用程序,我正在尝试使用 jasmine/karma 进行单元测试。下面是组件中的代码:

使用数据库中的 v-for=(data,index) 后,我在模板中设置 data.date:

<p class="date">
  {{ dateFilter(data.date) }}
</p>

现在我可以测试给定数据的格式是否正确。我目前在规范文件中有这样的内容:

import { mount } from '@vue/test-utils';
import moment from 'moment'

it('should call method', () => {
  const selector = wrapper.find('date');
 
});

如何调用该方法并传递一个模拟参数来测试该方法?也可以导入moment js吗?

最佳答案

测试日期是否以正确的格式呈现:

const wrapper = mount(MyComponent, {
  propsData: {
    // assuming component has `items` prop, used in:
    // <p class="date" v-for="data in items"> {{ dateFilter(data.date) }} </p>
    items: [
      {
        id: 100,
        date: new Date('2020-12-10T12:30:45-08:00') // 12:30pm GMT-8 === 4:30pm UTC
      }
    ]
  }
})

const dateEl = wrapper.find('.date') // find first dateElement with `date` class
expect(dateEl.text()).toEqual('16:30 pm')

要直接测试组件方法,请通过包装器的vm property 访问该方法:

expect(wrapper.vm.dataFilter(new Date('2020-12-10T12:30:45-08:00'))).toEqual('16:30 pm')

关于javascript - 无法使用vue和moment将参数传递给 Jasmine 中的按钮方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65316978/

相关文章:

javascript - jQuery UI slider 滚动条中的鼠标滚轮控制

javascript - 如何在 Vue 中停止组件加载和重定向?

javascript - 仅在一个 Vue Router 页面上处理 keydown 事件

laravel - 将 vue-router 与 Laravel Vue 应用程序一起使用,如果我登录后转到基本 URL,它会显示 404

javascript - VueJs 和 Vuex,如何将 v-model 附加到动态字段

javascript - Teechart HTML5,线条颜色和粗细

javascript - jQuery 在单击时获取数据属性不起作用

javascript - Rails 如何使用来自 ajax post 请求的 json 响应更新部分

v-html 中的 Vue.js <pre> 标签

vue.js - 从 Highchart 事件内部更改 VueJS 组件数据值