2013-02-05 12 views
8

私はJasmineライブラリを勉強しています。Jasmineには組み込みのアサーションが非常に限られています。私はまた、そのような限られた数を持っているにもかかわらず、そのアサーションの2つが冗長であるように見えることに気づいた:toBeDefined/toBeUndefined。言い換えれば ジャスミン:なぜ未定義?not.toBeDefined?

、これらの両方がまったく同じことを確認するためと思われる。

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

このためのいくつかの理由がtoBeDefinedtoBeUndefinedと同じでない場合と同様に、ありますか?または、これはジャスミンの1つの主張であり、2つの完全に等しい方法が呼び出されていますか? (最後の二つはtoEqualですから、私は行方不明のアサートを推測するが)

+3

"to bee ... or not.toBe ..." - それは質問です。私は一週間中ここにいる – demoncodemonkey

答えて

6

一つはtoBeTruthytoBeFalsy、またはtoBeLessThantoBeGreaterThanのために同じことを想定するかもしれません。最終的には、読みやすさとユーザーの好みになります。

より完全な答えを得るには、これらの関数で呼び出されるコードを調べると便利です。実行されるコードは個別のパスを経由します(toBeUndefinedは単に!toBeDefinedではありません)。本当に唯一の答えは、読みやすさです(迷惑な機能リクエストに与えることです)。 https://github.com/pivotal/jasmine/blob/master/src/core/Matchers.js#L135