Javascript Cypress:使用或与expect一起使用
我正在使用cypress,并且有一个具有某些属性的对象,例如:Javascript Cypress:使用或与expect一起使用,javascript,unit-testing,testing,cypress,chai,Javascript,Unit Testing,Testing,Cypress,Chai,我正在使用cypress,并且有一个具有某些属性的对象,例如: const对象={ 答:1,, b:2, c:3 } 我想在那里检查此对象: 两者都不应具有属性myProp 或者应该将属性myProp作为空字符串 或者应该将属性myProp设置为未定义 我首先尝试了前两个条件,但失败了,因此无法满足所有3个条件 这就是我所尝试的: expect(obj) .other.not.to.have.a.property('myProp')) .或.to.have.a.property('myProp
const对象={
答:1,,
b:2,
c:3
}
我想在那里检查此对象:
myProp
myProp
作为空字符串myProp
设置为未定义expect(obj)
.other.not.to.have.a.property('myProp'))
.或.to.have.a.property('myProp')
.即.is.a('string')。和.is.empty;
我看到的错误是:
请帮助我:
您可以使用自定义匹配器,这是一个具有任意复杂度并返回true或false的函数
功能检查myprop(obj){
常量myProp=obj['myProp'];
返回myProp==未定义||
(myProp!==未定义和类型的myProp==='string'&&myProp==='');
}
它('当myProp不存在时成功',()=>{
常量obj={a:1,b:2,c:3}
expect(obj).to.success(检查myProp,“myProp满足条件”);
})
它('当myProp为空字符串时成功',()=>{
常量obj={a:1,b:2,c:3,myProp:'}
expect(obj).to.success(检查myProp,“myProp满足条件”);
})
它('当myProp是字符串但不是空时失败',()=>{
const obj={a:1,b:2,c:3,myProp:'myValue'}
expect(obj).to.success(检查myProp,“myProp满足条件”);
})
它('当myProp是一个数字时失败',()=>{
const obj={a:1,b:2,c:3,myProp:4}
expect(obj).to.success(检查myProp,“myProp满足条件”);
})
如果要在测试中配置匹配器,请使用高阶函数(返回函数的函数)
功能匹配器(道具){
返回(obj)=>{
常量myProp=obj[prop];
返回myProp==未定义||
(myProp!==未定义和类型的myProp==='string'&&myProp==='');
}
}
它('当myProp不存在时成功',()=>{
常量obj={a:1,b:2,c:3}
expect(obj).to.emission(matcher for('myProp'),'myProp满足条件');
})
或作为一行(检查类型隐含在
==
运算符中)
const matcherFor=(prop)=>(obj)=>obj[prop]==未定义的对象[prop]===”;
可以使用与
.should()
相同的语法作为命令中的验证步骤
it('作为测试链中的验证步骤',()=>{
常量obj={a:1,b:2,c:3}
cy.wrap(obj)
。应('success',matcher for('myProp'),'myProp符合标准')
.然后(obj=>{
//进程对象
})
})