Как проверить усеченный фильтр с помощью Jest? - PullRequest
0 голосов
/ 23 октября 2018

Мне нужно проверить этот фильтр с помощью Jest.любая помощь?мой код выглядит следующим образом:

import Vue from "vue";

Vue.filter("truncate", (text, length, clamp) => {
    text = text || "";
    clamp = clamp || "...";
    length = length || 30;

    if (text.length <= length) return text;

    let tcText = text.slice(0, length - clamp.length);
    let last = tcText.length - 1;

    while (last > 0 && tcText[last] !== " " && tcText[last] !== clamp[0])
        last -= 1;

    // Fix for case when text dont have any `space`   last = last || length - clamp.length;
    tcText = tcText.slice(0, last);
    return tcText + clamp;
});

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Вот как у меня

Truncate.js

import Vue from 'vue'

export const truncate = (text, length, clamp) => {
  text = text || "";
  clamp = clamp || "...";
  length = length || 30;

  if (text.length <= length) return text;

  let tcText = text.slice(0, length - clamp.length);
  let last = tcText.length - 1;

  while (last > 0 && tcText[last] !== " " && tcText[last] !== clamp[0])
    last -= 1;

  // Fix for case when text dont have any `space`   last = last || length - clamp.length;

  tcText = tcText.slice(0, last);

  return tcText + clamp;
};

Vue.filter("truncate", truncate);

и вот здесь 'тестовый код:

import Vue from 'vue'
import { truncate } from '@/filters/truncate.js'

describe("truncate",() =>{
  it("truncates the text", ()=> {
    expect(truncate("putSomeTextHere", 5, "...")).toEqual("pu...");
   });
  });
0 голосов
/ 23 октября 2018

Поскольку вы используете глобальный фильтр, вы можете использовать отдельную функцию и легко импортировать ее в тест.

Сначала разделите фильтр:

export const truncate = (text, length, clamp) => {
  text = text || "";
  clamp = clamp || "...";
  length = length || 30;

  if (text.length <= length) return text;

  let tcText = text.slice(0, length - clamp.length);
  let last = tcText.length - 1;

  while (last > 0 && tcText[last] !== " " && tcText[last] !== clamp[0])
    last -= 1;

  // Fix for case when text dont have any `space`   last = last || length - clamp.length;

  tcText = tcText.slice(0, last);

  return tcText + clamp;
};

Vue.filter("truncate", truncate);

Затем импортируйтеи используйте эту функцию в своем тесте, например:

import { truncate } from '../filters.js';

describe("filter") { 
  it("truncates the text") {
    expect(truncate("your text", 5, "your clamp")).toEqual("expected")
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...