我已经注意到,如果我编写期望expect(null).toBeDefined();
,则测试将通过,因为茉莉花认为null是一个已定义但没有任何值的对象。
我的问题是,是否有一个匹配器来评估对象是否同时与undefined
和null
不同。
答案 0 :(得分:1)
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 == null
是true
,因此此测试将同时排除undefined
和null
。
答案 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);