Javascript 属性应存在,但不包含特定字符串
我想测试一个函数是否返回一个具有属性“src”但值“src”不包含字符串“sample”的对象数组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属性包含“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");