如果数组包含模拟数据(树),如何期望过滤器得到相同的结果。 我的自定义过滤器有两个参数,树和查询。如果查询为'foo',则过滤器的结果为:
{
nodes: [
{
label: 'foo1'
},
{
label: 'foo2'
}
],
label: 'foo'
}
如何期望数组中的任何元素与模拟树相等?
我的单元测试:
describe('customFilter', function () {
'use strict';
var definitionSearch,
tree;
beforeEach(module('myApp'));
beforeEach(inject(function ($filter) {
customFilter= $filter('customFilter');
tree = [
{
nodes: [
{
label: 'foo1'
},
{
label: 'foo2'
}
],
label: 'foo'
},
{
nodes: [
{
label: 'bar1'
}
],
label: 'bar'
}
];
}));
it('should find name', function () {
var query = 'foo'
expect(customFilter(tree, query)).toEqual(/* what should be here*/);
//customFilter(tree, query) ===> tree[0]
});
});
答案 0 :(得分:0)
简单的解决方案是将过滤器的结果保存到变量,并迭代数组中的项目进行比较
var result = customFilter(tree, 'foo')
expect(_.isEqual(result[0].nodes.sort(), tree[0].nodes.sort())).toBe(true);
expect(result[0].label === tree[0].label).toBe(true);
expect(result[0].nodes.length === tree[0].nodes.length).toBe(true);