Dav*_*ica 57 javascript jasmine karma-jasmine
使用Jasmine有一种方法可以测试2个数组是否包含相同的元素,但不一定是相同的顺序吗?即
array1 = [1,2,3];
array2 = [3,2,1];
expect(array1).toEqualIgnoreOrder(array2);//should be true
Run Code Online (Sandbox Code Playgroud)
Kas*_*ars 45
如果它只是整数或其他原始值,那么sort()
在比较之前就可以使用它们.
expect(array1.sort()).toEqual(array2.sort());
Run Code Online (Sandbox Code Playgroud)
如果是其对象,则将其与map()
函数组合以提取将要比较的标识符
array1 = [{id:1}, {id:2}, {id:3}];
array2 = [{id:3}, {id:2}, {id:1}];
expect(array1.map(a => a.id).sort()).toEqual(array2.map(a => a.id).sort());
Run Code Online (Sandbox Code Playgroud)
小智 36
您可以使用标准玩笑中的 expect.arrayContaining(array) :
const expected = ['Alice', 'Bob'];
it('matches even if received contains additional elements', () => {
expect(['Alice', 'Bob', 'Eve']).toEqual(expect.arrayContaining(expected));
});
Run Code Online (Sandbox Code Playgroud)
小智 29
茉莉花 2.8 及更高版本有
jasmine.arrayWithExactContents()
Run Code Online (Sandbox Code Playgroud)
它期望一个数组以任何顺序包含完全列出的元素。
array1 = [1,2,3];
array2 = [3,2,1];
expect(array1).toEqual(jasmine.arrayWithExactContents(array2))
Run Code Online (Sandbox Code Playgroud)
见https://jasmine.github.io/api/3.4/jasmine.html
// check if every element of array2 is element of array1
// to ensure [1, 1] !== [1, 2]
array2.forEach(x => expect(array1).toContain(x))
// check if every element of array1 is element of array2
// to ensure [1, 2] !== [1, 1]
array1.forEach(x => expect(array2).toContain(x))
// check if they have equal length to ensure [1] !== [1, 1]
expect(array1.length).toBe(array2.length)
Run Code Online (Sandbox Code Playgroud)
该笑话扩展包为我们提供了一些断言以便简化我们的测试中,它的更简洁和失败的测试误差更加明确。
对于这种情况,我们可以使用toIncludeSameMembers
expect([{foo: "bar"}, {baz: "qux"}]).toIncludeSameMembers([{baz: "qux"}, {foo: "bar"}]);
Run Code Online (Sandbox Code Playgroud)
小智 7
simple...
array1 = [1,2,3];
array2 = [3,2,1];
expect(array1).toEqual(jasmine.arrayContaining(array2));
Run Code Online (Sandbox Code Playgroud)
小智 1
//Compare arrays without order
//Example
//a1 = [1, 2, 3, 4, 5]
//a2 = [3, 2, 1, 5, 4]
//isEqual(a1, a2) -> true
//a1 = [1, 2, 3, 4, 5];
//a2 = [3, 2, 1, 5, 4, 6];
//isEqual(a1, a2) -> false
function isInArray(a, e) {
for ( var i = a.length; i--; ) {
if ( a[i] === e ) return true;
}
return false;
}
function isEqArrays(a1, a2) {
if ( a1.length !== a2.length ) {
return false;
}
for ( var i = a1.length; i--; ) {
if ( !isInArray( a2, a1[i] ) ) {
return false;
}
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
24857 次 |
最近记录: |