Javascript 属性应存在,但不包含特定字符串

Javascript 属性应存在,但不包含特定字符串,javascript,chai,Javascript,Chai,我想测试一个函数是否返回一个具有属性“src”但值“src”不包含字符串“sample”的对象数组 不幸的是,当结果数组包含src属性包含“sample”的对象时,此测试仍然通过。removeSampleImages()是什么样子的?听起来像是在检查是否有任何项是“sample”,而不是检查是否有任何项的src属性设置为“sample”。您需要使用Chai助手或仅使用expect(result.every(it=>src.indexOf('sample')===-1))@br3w5循环遍历结果,

我想测试一个函数是否返回一个具有属性“src”但值“src”不包含字符串“sample”的对象数组


不幸的是,当结果数组包含src属性包含“sample”的对象时,此测试仍然通过。

removeSampleImages()是什么样子的?听起来像是在检查是否有任何项是
“sample”
,而不是检查是否有任何项的
src
属性设置为
“sample”
。您需要使用Chai助手或仅使用
expect(result.every(it=>src.indexOf('sample')===-1))
@br3w5循环遍历结果,这没关系。为了进行此测试,假设函数写得不正确,它只返回所传递的内容。@cormickjbrowne这很重要,因为
result
的外观将影响您对其进行断言的方式。现在,您的逻辑是“检查对象是否具有属性'src',并检查相同的对象是否不包含文本'sample'”,而不是检查
src
是否不包含文本。测试通过,因为如果您只是针对对象进行检查,“sample”是未定义的-您需要针对
src
key@br3w5我的意思是,函数是如何编写的并不重要,因为我想知道如何编写测试,而不是函数。最后我写了这样一个:expect(result.every(function(image){return image.src.indexOf('sample')=-1;})).to.be.true;
var images = [
    {
        id: 11111,
        src: 'images/sample-red_dress.jpg',
        position: 1
    },
    {
        id: 21111,
        src: 'images/front-red_dress.jpg',
        position: 2
    },
    {
        id: 21112,
        src: 'images/back-red_dress.jpg',
        position: 3
    }
];

var result = removeSampleImages(images);

expect(result).to.all.have.property('src').and.to.not.contain("sample");