我有一个过滤器谓词函数,用来过滤角度上的垫子表。
this.dataSource.filterPredicate = this.myService.tableFilter();
tableFilter(): (data: any, filter: string) => boolean {
let filterFunction = function (data, filter): boolean {
let filterValues = JSON.parse(filter);
... my logic ...
};
return filterFunction;
}
}我想编写一个单元测试来测试这个过滤器谓词函数。
it('filter table', inject(
[MyService],
(service: MyService) => {
// how to do this?
let messageObject = service.tableFilter(dummyData,
getDummyFilterValues());
}
));如何在单元测试中调用service.tableFilter函数?
发布于 2019-10-12 20:27:06
将下面代码中返回对象的逻辑替换为布尔返回(在您的情况下)。我认为问题在于如何调用返回的函数。
打字码
tableFilter(): (data: any, filter: string) => any {
const filterFunction = (data, filter) => {
const filterValues = JSON.parse(filter);
return data.find(d => {
return d.num === filterValues.num;
});
};
return filterFunction;
}规范文件/单元测试块
it('test filterfx', () => {
const fixture = TestBed.createComponent(AppComponent);
const app = fixture.debugElement.componentInstance;
const filterfx = app.tableFilter();
expect(filterfx(app.data, JSON.stringify({ num: 'one' })).num).toEqual('one');
});https://stackoverflow.com/questions/58352615
复制相似问题