10

我只是在学习 Jasmine 库,我注意到 Jasmine 的内置断言数量非常有限。我还注意到,尽管数量有限,但其中的两个断言似乎是多余的:toBeDefined/ toBeUndefined

换句话说,这两个似乎都在检查相同的东西:

expect(1).toBeDefined();
expect(undefined).not.toBeUndefined();

这有什么原因吗,比如toBeDefined不一样的情况toBeUndefined?或者这只是 Jasmine 中的一个断言,它有两种完全相等的调用方式?

4

1 回答 1

10

toBeTruthy对于and toBeFalsy, or toBeLessThanand可能会假设相同toBeGreaterThan(尽管我猜最后两个中缺少的断言是toEqual)。最后,它归结为可读性和用户偏好。

为了给您一个更完整的答案,查看为这些函数调用的代码可能会很有用。执行的代码通过不同的路径(所以toBeUndefined不是简单的!toBeDefined)。唯一有意义的真正答案是可读性(或屈服于烦人的功能请求)。https://github.com/jasmine/jasmine/tree/main/src/core/matchers

于 2013-02-06T13:40:17.727 回答