【问题标题】:sinon - how to check if a value is in an array?sinon - 如何检查一个值是否在数组中?
【发布时间】:2019-07-21 13:58:41
【问题描述】:

我知道我可以检查特定索引中的特定值,例如 - 检查索引 0 处的值:

sinon.assert.match(myArr[0], someValue)

但是我如何检查someValue 是否在myArr 中的任何位置?

【问题讨论】:

    标签: javascript unit-testing testing sinon


    【解决方案1】:

    如果您不想创建遍历每个元素的循环,可以使用以下方法。

     myArr.includes(someValue);
    

    我还没有用 sinon 尝试过,但看看这是否有效:

    assert.equals(myArr.includes(someValue), true);
    // or
    assert(myArr.includes(someValue));
    

    【讨论】:

    • 哦,对了,我没想到!但是如果someValue 是一个对象,它就不起作用..你知道如何让它起作用吗?
    • @Gambit2007 在这种情况下你可以使用myArray.find(predicate) predicate 定义你的标准。当您说 someValue 是一个对象时它不起作用时,这意味着您希望以特定方式将对象等同起来,而 includes 通过身份等同于对象。
    • @Gambit2007 井对象具有引用标识(它们只是花哨的指针)。给定eq = (a, b) => a === b, 和a = {}b = {}, eq(a, b)false 但对于a = {}b = a eq(a, b)true 因为a 和@9876
    • 哦,好吧,所以myArr.includes() 只有在引用同一个对象时才有效?
    猜你喜欢
    • 2021-05-28
    • 1970-01-01
    • 2022-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多