2017-05-11 4 views
0

私は単体テストを書くときに新しいので、ボットコードの単体テストを書いています。 私は私を悩ませ、この部分を持っている:コード行の単位テスト

const accessToken = (() => { 
    if (process.argv.length !== 3) { 
    console.log('usage: node main/implementation'); 
    process.exit(1); 
    } 
    return process.argv[2]; 
})(); 

イスタンブールは、このラインreturn process.argv[2];がカバーされていないことを私に示しているが、私はその行のためのユニットテストを書くことについてどんな考えを持っていません。

+0

あります; – vabii

答えて

1

イスタンブールは、この行がカバーされていないことを言えば、それはすべてのテストケースが

process.argv.length !== 3 

に一致するので、あなたのテストのどれもがそれを固定する前にこのライン

return process.argv[2]; 

に行くされていないことを意味しこのラインのテストを追加することが適切かどうかを尋ねる必要があります(100%のカバレッジは必ずしも必要ではありません)。

修正したい場合は、process.argvの値を設定してみてください。 (これは単なるアイデアです、私はあなたがこのようにprocess.argvの値を設定できるかどうかは確信していません)。ここで擬似コードは、CONST accessToken =(()=> {..コード})( 'A'、 'B'、 'C​​')のように、あなたの生命維持に3つのパラメータを渡す必要

const fakeArgv = [1, 2, 3]; 
process.argv = fakeArgv; 

it('should return third argv',() => { 
    expect(accessToken).to.equal(3) 
}) 
+0

"return process.argv [2];"を削除した場合、私のアプリケーションはもう動作しません^^ ' だから私はすべての精巣がその行に行き、誰もこれに行くとは思わない:process.argv。長さ!== 3 –

+0

あなたのアプリを起動するためにどのようなコマンドを実行しますか?あなたのテストを始めるためにどのようなコマンドを実行しますか?コマンドが異なる場合は、私のpackage.jsonから – ThomasThiebaud

+0

あなたのアプリではなく、あなたのテストで引数を持つことができます。 「スタート」:「ノードビルド/ implementation.js AEDARC6WSMQNHLEA6I2TNFOT7GEJ2VOH」 「テスト」:「モカテスト/テスト.spec.js "、 –

関連する問題