2017-11-09 14 views
-1

ファイルシステム(デバイス、パーティション)の詳細を読み取るためにクロスプラットフォームのノードユーティリティを構築しています。テストでは、エラーがスローされたときの動作をテストする必要がありますデータを得るためにユーティリティが実行するシェルコマンドから削除します。ノードJSの子プロセス実行でWindowsでエラーをトリガーする方法

残念ながら私はdosやPowerShellの知識はほとんど持っていませんし、エラーをスローしてエラーで終了するバッチコマンドを書く方法はわかりません。

エラーを一括してスローして、子プロセスがそれを捕まえることができますか?ここで

あなたはいじるするためのサンプルコードです:

import os from 'os'; 
import child from 'child_process'; 
import { expect } from 'chai'; 

const cmd = os.platform() === 'win32' 
    // This command should result in throwing an error to exec 
    ? `1>&2 echo 'Echoed Error'\nexit /b 1` 
    // This has the expected behaviour on linux and osx 
    : `>&2 echo 'Echoed Error'; exit 1`; 

expect(child.execSync.bind(child, cmd)).to.throw(); 
child.exec(cmd, (err) => { 
    expect(err).to.be.an.instanceof(Error); 
}); 
+1

[MCVE]を確認してから投稿してください。 – jwdonahue

+0

ええ、あなたはとても長いので、[最小、完全かつ検証可能](https://stackoverflow.com/help/mcve)質問 –

+0

を投稿する方法を知っているようですあなたのコメントをありがとう:) それはdidn 'これが必要であることを心に留めてください。 '1>&2 echo 'Echoed Error' \ nexit/b 1'という行が十分だと思った。あなたは今あなたが望むものを見つけるべきです –

答えて

0

私は存在しない外部または内部コマンドを呼び出すことであるCMD、中にエラーを発生させる方法を見つけました。したがって、errorまたはiamnotanexistingcommandのようなコマンドは、私が再現しようとしているものに十分なエラーを投げます。

関連する問題