茉莉花或期待

时间:2018-02-07 23:32:01

标签: testing jasmine

我正在尝试在这种情况下实现

expect(Object.keys(testObj)).not.toContain(value)
 OR expect(testObj).toEqual(jasmine.objectContaining({
    value: "1"
    }))

我正在尝试检查当obj没有密钥时的情况,或者如果它确实有该密钥,那么该密钥等于某个值。

1 个答案:

答案 0 :(得分:0)

直接回答

你可以这样做。

function assertKeyDoesntExistOrHasSpecificValue(myObj, key, expectedValue) {
  if(!myObj.hasOwnProperty(key) || myObj[key] === expectedValue) {
     return true;
  }
  return false;
}

it('should not have property x OR property x should have the value y', () => {
    expect(assertKeyDoesntExistOrHasSpecificValue(myObject, 'myProperty', 'myValue')).toBe(true);
});

在上面我已经创建了一个函数,用于检查和调用单个茉莉花期望的腿部工作。因此,我可以根据给定的输入检查辅助函数是否返回true。

进一步关于孤立测试

但是,听起来你试图用一个测试用例来测试逻辑中的条件。我建议不要这样做,因为测试用例应该是可预测的。

即。要么它有财产,要么没有财产。

我建议编写多个测试用例,在测试用例1中,输入产生没有密钥的对象。测试用例2,输入产生具有预期键和值的对象。