【发布时间】:2019-08-29 23:38:37
【问题描述】:
我正在使用管道对包含两个日期时间列的 json 数组按升序或降序排序(由布尔值 isDescending 触发,但是单元测试似乎并不关心每个对象在数组。就像在测试中所有 4 种情况都返回 true,即使返回的数组与 dummyData[] 相比应该具有相反顺序的项目。我做错了什么
sortpipe.ts
export class SortByPipe implements PipeTransform {
transform(data: iRepositories[], args?: ISortByPipe): iRepositories[] {
if ( !args.column)
{
return data;
}
return data.sort((a, b) => {
if (args.isDescendingOrder)
{
return a[args.column] > b[args.column] ? -1 : 1;
}
else
{
return a[args.column] > b[args.column] ? 1 : -1;
}
});
}
}
sortpipe.spec.ts
describe('SortByPipe', () => {
let pipe: SortByPipe;
beforeEach(() => {
pipe = new SortByPipe();
});
const dummyData = [
{ id: 1, created_at: '2014-01-24T13:40:11Z', updated_At: '2015-01-24T13:40:11Z' },
{ id: 2, created_at: '2015-01-24T13:40:11Z', updated_At: '2016-01-24T13:40:11Z' },
{ id: 3, created_at: '2016-01-24T13:40:11Z', updated_At: '2017-01-24T13:40:11Z' },
];
it('create an instance', () => {
expect(pipe).toBeTruthy();
});
// this is correct
it('should return in the same order as the original data (sort by created_at date)', () => {
const args: ISortByPipe = {column: 'created_at', isDescendingOrder: false};
expect(pipe.transform(dummyData, args)).toEqual(dummyData);
});
// this is correct
it('should return in the same order as the original data (sort by last commit date)', () => {
const args: ISortByPipe = {column: 'updated_At', isDescendingOrder: false};
expect(pipe.transform(dummyData, args)).toEqual(dummyData);
});
// this should be false but its returning true
it('should return in descending order (sort by created_at date)', () => {
const args: ISortByPipe = {column: 'created_at', isDescendingOrder: true};
expect(pipe.transform(dummyData, args)).toEqual(dummyData);
});
// this should be false but its returning true
it('should return in descending order (sort by last commit date)', () => {
const args: ISortByPipe = {column: 'updated_At', isDescendingOrder: true};
expect(pipe.transform(dummyData, args)).toEqual(dummyData);
});
})
【问题讨论】:
标签: angular karma-jasmine