Chai - 断言数组中的所有元素都等于给定的值



>我有这个字符串数组:

[ "apple", "apple", "apple", "apple", "apple", "apple", ]

是否可以用 Chai 断言数组中的所有元素都等于某个值?

arrayFromApiResponse = [ "apple", "apple", "apple", "apple", "apple", "apple", ]
expectedFruit = "apple"
expect(arrayFromApiResponse).to ??? 

我需要测试arrayFromApiResponse中的每个值是否"apple"

我找到了这个 https://github.com/chaijs/Chai-Things

似乎有了这个库,它可以像这样完成:

expect(arrayFromApiResponse).should.all.be.a(expectedFruit)

但是,是否可以在没有额外库的情况下实现这一目标?也许我可以对arrayFromApiResponse进行一些更改,以便 Chai 可以对其进行验证?

UPD:我更新了问题标题,以防止将我的问题标记为重复此类问题: 检查数组的所有值是否相等

您可以使用every()方法。

const arrayFromApiResponse = [ "apple", "apple", "apple", "apple", "apple", "apple", ]
const expectedFruit = "apple"
const allAreExpectedFruit = arrayFromApiResponse.every(x => x === expectedFruit);
console.log(allAreExpectedFruit);

const arrayFromApiResponse = [ "apple", "apple", "apple", "apple", "apple", "apple"]
const expectedFruit = "apple"

您可以使用filter()执行此操作,但最有效的方法是使用旧的for循环:

function test(arr, val){
for(let i=0; i<arrayFromApiResponse.length; i++){
if(arr[i] !== val) {
return false;
}
}
return true;
}

这样做更有效的原因是,此函数将在看到不等于预期值的值时立即终止。其他函数将遍历整个数组,这可能效率极低。像这样使用它:

expect(test(arrayFromApiResponse, expectedFruit)).toBe(true);

相关内容

  • 没有找到相关文章

最新更新