javascript - 使用 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');
});
});
推荐阅读
- arrays - 当用户位于 UIPageControl 的最后一页时,设置 SignIn / SignUp 按钮的可见性
- flutter - Flutter Animation - 分解图像以使图像颜色充满屏幕
- react-admin - 在 react-admin 中,referenceInput 对 api 进行了很多调用 - 如何避免这种情况?
- sql - 在 WHERE 子句中将字符串数组单独转换为自定义枚举类型
- java - Java 自定义标签不起作用/使用问题
- tensorflow - 如何解决 TensorFlow 2.0 的错误?
- clojure - 在 Clojure / Ring / HttpKit 应用程序中获取 POSTed 数据
- ruby - 如何使用建立连接创建类以建立数据库连接 - RUBY
- java - 切换抽屉导航栏
- javascript - 替换数组的字段