2016-04-19 3 views
0

'x'に等しい値が私の関数に例外をスローするかどうかを見たいと思っています。ブロックが例外をスローするかどうかを調べるユニットテストがありますが、引数が 'x'の場合にのみ例外がスローされるようにしたいです。アサートを使ってこれをどうすればいいですか?ここでJavaScriptでMochaとassert.throwsを使用して引数の値をテストするにはどうすればよいですか?

は、私が何を意味するか説明するためにいくつかのコードです:

// Some function to check if a color is not transparent. 
function checkColor(color) { 
    if (color == 'transparent') { 
    throw new TypeError('cant have transparent colors!'); 
    } else { 
    return color; 
    } 
} 

はここにアサートです:

assert.throws(checkColor, /cant have transparent colors!/); 

さて、私は色=あれば、私の関数は、唯一の例外がスローされますので、そのアサーションが失敗します知っています= '透明'。モカとアサートを使用して、私はそれを望むようにアサーションをどのようにテストするのですか?私は単なる色をテストしたくない!==未定義か、ある種のものです。私は特に例外が上の特定の状況の下で発生しているかどうかを確認したい - 例外を発生させる唯一の状況です(空の色を持つため実際に別の場所で処理されるため)。

+0

質問が不明です。 – Amit

+0

"'x'と等しい値は例外をスローします。値は例外をスローしません。関数はそれを行います。 "しかし、引数が 'x'なら例外がスローされ、引数が' 'x ''のときに例外をスローするように関数に指示します。 –

答えて

2
assert.throw(function() { iThrowError(argument) }, Error) 

ここで、引数= x;

+1

ああ...私はばかです!私はこれを非常に早い時間に見ていて、それで完全に離れていました。私はこれが撃たれることを与えます、私はそれが動作すると確信しています。 – Jesse