【发布时间】:2018-11-30 01:13:36
【问题描述】:
警告:我是 Jest 的新手,所以请忍耐。
我正在尝试使用名为 DateFilter 的 Jest 测试 Vue2.js 过滤器。此过滤器只是将日期格式应用于传递给它的日期。
日期过滤器.js
import Vue from 'vue';
import moment from 'moment';
const dateFormatter = (dateValue, dateFormat) => {
return moment(dateValue).format(dateFormat);
};
Vue.filter('date', dateFormatter);
export default dateFormatter;
所以,我在这里看到三个有效的单元测试
DateFilter 模块应该导出一个函数
日期过滤器应使用传递的日期值初始化时刻
日期过滤器应该在传递了 dateFormat 的那一刻调用 format 方法
DateFilter.test.js
import moment from 'moment';
import DateFilter from './DateFilter';
describe('DateFilter', () => {
it('should exist', () => {
expect(DateFilter).toBeDefined();
expect(typeof DateFilter).toBe('function');
});
it('should moment.format with the dateValue and dateFormat passed.', () => {
// Here I get lost in how to spyOn moment function and the .format function
const mockDateFormat = `dateFormat-${Math.random()}`;
const mockDate = `mockDate-${Math.random()}`;
jest.mock('moment', () => {
return { format: jest.fn() }
});
// expect moment to have been called with mockDate
// expect moment(mockDate) to have been called with mockDateFormat
});
});
【问题讨论】:
标签: javascript unit-testing vue.js vuejs2 jestjs