测试 Vue.js 过滤器

Posted

技术标签:

【中文标题】测试 Vue.js 过滤器【英文标题】:Testing Vue.js Filters 【发布时间】:2020-01-05 23:56:56 【问题描述】:

我正在尝试为我的 Vue.js 过滤器编写一个测试,但我不知道从哪里开始特别是过滤器????

过滤器

Vue.filter('pluralize', (word: string, amount: number) => amount > 1 ? `$words` : word);

在 Vue.js 组件中的使用

 'recharge' | pluralize(count) 

所以如果计数大于 1,Recharge 变为 Recharges

测试标记

这是迄今为止我对测试标记的了解:

import createLocalVue from '@vue/test-utils';

describe('pluralize', () => 
  let localVue = createLocalVue();
  localVue.filter('pluralize', (word: string, amount: number) => amount > 1 ? `$words` : word);

  it('returns plural suffix value', () => 
    // Test comes here...
  );
);

【问题讨论】:

您检查过我的答案是否适合您吗? @KD1 嗨@user9993 是的,谢谢你按照建议工作:) 请随意标记已接受的答案。 @KD1 【参考方案1】:

如果它是一个过滤器,那么您通常可以将其视为Pure function。它总是为给定的输入返回相同的输出。

知道了这一点,我会改为测试函数本身,而不是尝试通过组件对其进行测试。如果它自己工作,那么你就知道它会在组件内部工作。

我也会利用 ES 模块,让我们看看它是如何工作的。

filters.js:

const pluralize = (word: string, amount: number) => amount > 1 ? `$words` : word);

export 
    pluralize,
    // ... other filters
;

filters.spec.js:

import  pluralize  from './filters.spec.js';

describe('filters', () => 
    test('pluralize should return suffix value', () => 
        expect(pluralize('recharge', 10)).toBe('recharges');
    );
    // ... your other tests here

PS:如果您尝试将“cacti”转换为“cactus”,此代码将不起作用,您最终会得到“cactis”。

【讨论】:

以上是关于测试 Vue.js 过滤器的主要内容,如果未能解决你的问题,请参考以下文章

Vue.js 过滤器

Vue.js 过滤器

Vue.js 过滤器

vue.js 过滤器

使用 vue.js 注册自定义过滤器

Vue.js 自定义过滤器