2016-10-12 5 views
0

nullableパラメータをchai.jsとアサートするためのクリーンな方法はありますか?例として、私は次のメソッドを持っているとしましょう:null可能なパラメータのアサート

public set numberOrNull (value : number) { 

    chai.expect(value).to.be.a("number"); 
    this._number = value; 
} 

私は、このメソッドにnullを渡すと、私はまだチャイからの例外を取得したいです。私はもちろん、このような何かのために行くことができますが、これを行うための任意のより良い方法があるかどう思っていた:

if (null !== value) { 
    chai.expect(value).to.be.a("number"); 
} 

this._number = value; 
+0

私はあなたのパラメータがタイプされているので、あなたはtypescriptを使用していると仮定します。したがって、nullをチェックする必要はありません。タイプスクリプトはコンパイル時にそれを捕捉する必要があります。テストに関して。値がnullまたは数値の場合は、両方の結果を反映するために2つの独立したテストを書くべきです。 – japrescott

+0

@japrescott私はtypescriptを書いていますが、これは私の単体テストではありません。これは私のランタイムアサーション/前提条件の一部なので、typescriptコンパイラは役に立ちません。 typescriptのすべての型もnull可能です。つまり、値を渡すかnullを渡すかは問題なく動作します。 – Mahdi

+0

Typescript2.0が[null不可能な型]を追加しました(https://blog.mariusschulz.com/2016/09/27/typescript-2-0-non-nullable-types)。これは単体テストコードではなく、単体テストコードなので、チャイ/アサーションを野生で使用しないことを強くお勧めします。タイスクリプトと単体テストに頼って、あなたのコードが野生のバトルプルーフであることを信頼してください。あなたは野生(そのユーザー入力の場合)の型をチェックする必要がありますが、エラーをスローしないでください。ちょうど – japrescott

答えて

0

あなたはsatisfyを使用することができます。

expect(value).to.satisfy(value => value === null || typeof value === 'number'); 

音攻勢をしたくないが、あなたがテストしたいそれぞれの機能がパラメータ値としてnullを許可しないときには、もっときれいになると思います。私の観点からすれば、これは理由が分かりやすい機能をもたらすでしょう。

編集: TypeScriptを見落としました。もしそうなら、私は@japrescottのcommentと一緒にいて、言語の能力に頼っています。

+0

はい、私は満足しているメソッドを認識していますが、むしろそれは一貫性を保ち、カスタムアサーションを記述するのではなく、チャイアサートを使用しています。 – Mahdi

+0

はい、大丈夫です。さて、私はその種のチェックを可能にする定義済みのアサーションについて認識していません。申し訳ありません:/ – notion

+0

しかし、関数がnullを受け入れない場合は、そのプロパティの値をnullに設定します(これは予想される動作です)。 setSomethingToNullメソッドを作成しますか? – Mahdi

関連する問題