Jasmine:为什么要定义,而不是.toBeDefined?

mac*_*ost 10 jasmine

我刚刚学习了Jasmine库,我注意到Jasmine的内置断言数量非常有限.我也注意到,尽管数量有限,但它的两个断言似乎是多余的:toBeDefined/ toBeUndefined.

换句话说,这两者似乎都会检查同样的事情:

expect(1).toBeDefined();
expect(undefined).not.toBeUndefined();
Run Code Online (Sandbox Code Playgroud)

这有什么理由,就像一个toBeDefined不一样的情况toBeUndefined?或者这只是Jasmine中的一个断言,它有两种完全相同的被调用方式?

DF_*_*DF_ 9

有人可能会假设toBeTruthytoBeFalsy,或者toBeLessThantoBeGreaterThan(虽然我猜最后两个中缺少的断言是toEqual).最后,它归结为可读性和用户偏好.

为了给您一个更完整的答案,查看为这些函数调用的代码可能很有用.执行的代码通过不同的路径(因此toBeUndefined不是简单的!toBeDefined).唯一真正有效的答案是可读性(或者让人烦恼的功能请求).https://github.com/pivotal/jasmine/blob/master/src/core/Matchers.js#L135