javascript - 使用 Jasmine 对过滤器组件进行单元测试

标签 javascript angularjs karma-jasmine

我创建了一个组件来过滤掉传递给它的字符串。我正在尝试为其编写单元测试,但它向我抛出了与构造函数相关的错误。请帮助我。

import angular from 'angular';
import filter from "./format-string.filter"

angular
.module( "filters.truncateString", [] )
.filter( "truncateString", () => filter );

class TruncateString {
 filter(val){
    const accValue = val.split('YYYY');
    const firstValue= accValue[1].replace(/^(|-?\d+)$/, '');
    return `${accValue[0]} ${firstValue} AAA`;
 }
}

export default TruncateString .filter;`

我写的测试是

import angular from 'angular';
import 'angular-mocks';
import TruncateString from './format-string.filter';
describe('TruncateString filter', () => {
let controller, filter;

beforeEach(angular.mock.module('filters.TruncateString'));
controller = new TruncateString();

beforeEach(inject(function(_$filter_){
    filter = _$filter_;
}));

it('Checking whether the function is returning formatted string', () => {
    const result = controller.filter('123YYY3213123');
    expect(result).toHaveBeenCalledWith('123 YYY ... 23');
});
});

最佳答案

以下是测试过滤器的方法

describe('Test My Filter', () => {
  let $filter;

  beforeEach(() => {
    module('filters.TruncateString');

    inject((_$filter_) => {
      $filter = _$filter_;
    });
  });

  it('should test filter behavior', () => {
    let result = $filter('truncateString')('testval');
    expect(result).toEqual('expectedval');
  });
});

关于javascript - 使用 Jasmine 对过滤器组件进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55474231/

相关文章:

javascript - 仅在子菜单存在时显示图标

javascript - 获取 .js.erb 文件以在 textmate 中使用 javascript 编辑器

javascript - AngularJS (HTML, CSS) 在客户端转为 pdf

javascript - ngRepeat 用作表内的元素不起作用

angular - Karma ng 测试未在控制台中显示构建错误

angularjs - 如何测试模块中的常量?

javascript - 有选择地使用replace()吗?

javascript - 数据库事务的 promise 正在解决,但之后的函数未运行。 AngualarJS, Cordova

angularjs - karma 开始 - 传递参数

javascript - jQuery : Connect list counter