茉莉花:Matcher与undefined不同,并且与null不同(!= undefined和!= null)

时间:2018-09-11 09:49:18

标签: angular typescript unit-testing jasmine

我已经注意到,如果我编写期望expect(null).toBeDefined();,则测试将通过,因为茉莉花认为null是一个已定义但没有任何值的对象。

我的问题是,是否有一个匹配器来评估对象是否同时与undefinednull不同。

5 个答案:

答案 0 :(得分:1)

如果context为null或未定义,则失败。这种检查现有情况的更好方法

expect(context).toEqual(jasmine.anything());

答案 1 :(得分:0)

我发现的唯一方法是在不同的语句中评估if是否为undefined和if不是null

expect(context).toBeDefined();
expect(context).not.toBeNull();

但这并不能真正回答我的问题。

答案 2 :(得分:0)

只需使用.toEqual()

expect(context).not.toEqual(null);

在Javascript中,undefined == nulltrue,因此此测试将同时排除undefinednull

答案 3 :(得分:0)

据我了解,您可以使用juggling-check来检查null和undefined。

let foo;
console.log(foo == null); // returns true when foo is undefined

let bar = null;
console.log (bar == null); // returns true when bar is null

然后我一直用茉莉花期望

expect(foo == null).toBe(true);  // returns true when foo is null or undefined

如果我们能够做到这一点真的很棒(但是据我所知你还不知道)。

expect(foo).toBeNullOrUndefined() // How cool would that be! :-)

答案 4 :(得分:0)

这是我的方法。我认为这是描述性的。

 expect(![null, undefined].includes(myValue))
    .withContext('myValue should not be null or undefined')
    .toEqual(true);