如何使用Node JS Child Process Exec在Windows上触发错误

时间:2017-11-09 22:48:54

标签: node.js windows batch-file child-process windows-console

我正在构建一个跨平台节点实用程序来读取文件系统(设备,分区)的详细信息,在我的测试中,我需要测试从实用程序运行以获取其数据的外壳命令中抛出错误时的行为

不幸的是我对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 个答案:

答案 0 :(得分:0)

我找到了一种在cmd中导致错误的方法,即调用不存在的外部或内部命令。因此,像erroriamnotanexistingcommand这样的命令会抛出一个错误,这对于我想要重现的内容就足够了。