javascript unittests jest 库中有assertCountEqual 等效项吗?

mak*_*aki 5 javascript unit-testing jestjs

当结果列表的顺序发生变化时,我有一个玩笑单元测试,对对象列表进行断言,这些对象在一个环境中传递,而在其他环境中失败。我正在寻找一些assertCountEqual(python)等效的jest库。我会感谢任何帮助。我尝试添加sort()到我的断言中,但列表中有自定义对象,而且它并不那么简单:expect(list1.sort()).toEqual(list2.sort());

小智 3

Jest不支持此类断言,但您可以编写自己的函数:

  1. 自定义比较器如许多文章中所述:

    function customFieldCompare(a, b){
        const customField1= a.customField;
        const customField2= b.customField;
        if (customField1 > customField2) {
            return -1;
        }
        if (customField2 > customField1) {
            return 1;
        }
        return 0;
    }
    
    Run Code Online (Sandbox Code Playgroud)

    可以与简单的一起使用expect toEqual

    expect(list1.sort(customFieldCompare)).toEqual(list2.sort(customFieldCompare));
    
    Run Code Online (Sandbox Code Playgroud)
  2. 风俗assertCountEqual

    function customAssertCountEqual(array1, array2){
        expect(array1.length).toEqual(array2.length);
        array1.forEach(function (arrayItem) {
          expect(array2).toContainEqual(arrayItem)
        });
    }
    
    Run Code Online (Sandbox Code Playgroud)