我正在使用Jasmine.js编写JS单元测试,不确定这种类型的代码是否违反了任何类型的测试原则:
expect(someObject).toNotBe(undefined || null);
而不是
expect(someObject).toNotBe(undefined);
expect(someObject).toNotBe(null);
尽管null
和undefined
不同,但就我的测试而言,我并不(我想)关心它是哪一个。
答案 0 :(得分:3)
undefined || null
返回null
,因为undefined
是假的:
> undefined || null
null
您的第一个示例实际上等同于第二个示例的第二行,即:
expect(someObject).toNotBe(null);
此外,toNotBe
is deprecated:
旧的匹配器
toNotEqual
,toNotBe
,toNotMatch
和toNotContain
已弃用,将在以后的版本中删除。请更改您的规范,分别使用not.toEqual
,not.toBe
,not.toMatch
和not.toContain
。
您可能希望检查null
与false != null
的平等(不是身份!),undefined == null
:
expect(someObject).not.toEqual(null);
如果someObject
false
,0
,[]
等也不受欢迎,您也可以这样做:
expect(someObject).toBeTruthy();
否则,你应该编写自己的匹配器。