管道成功排序数据但测试返回不正确的结果

约翰·道

我正在使用管道对带有两个日期时间列的 json 数组按升序或降序排序(由 boolean 触发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);
  });
})
蛙蛙

像这样尝试

let sortarray = [...data];
sortarray = sortarray.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;
      }
    });
return sortarray;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章