调用Mocha并将结果传递给字符串

时间:2013-02-04 22:06:29

标签: powershell filesystemwatcher pipeline mocha

我创建了一个FileSystemWatcher对象,我已经注册了事件。我打算这个脚本在同一目录下运行一个执行mocha。我可以使用以下命令从脚本执行mocha

$testProgram = "mocha"
& $testProgam

我得到了结果.. ...

3 test complete....

现在,当我使用相同的代码并将其包装在像这样的事件中时......

$changed = Register-ObjectEvent $watcher "Changed" -Action {
  clear
  write-host "Running Test Scripts.........."
  write-host "Changed: $($eventArgs.FullPath)"
  & testProgram
}

我明白了......

Running Test Scripts.......................
Changed: C:\files\main.js

& testProgram的结果在哪里?

1 个答案:

答案 0 :(得分:0)

我没有PS测试这个atm,所以如果我错了请纠正我。我可以想到你可以查看的多个问题:

  • 你有一个错字。在您的操作栏中,testProgram错过了前面的美元符号。
  • 我很确定ObjectEvent在单独的范围内运行动作块,您无法从脚本中获取参数。您可以尝试使用例如$global:testProgram
  • 相对路径在这里可能不起作用。您可能需要“mocha”可执行文件的绝对路径或它是什么。

编辑:我找到了一个解决方案,您可以尝试解决可能的范围问题(到达您的操作块内的testprogram变量)。 Shay Levi在Technet上发布了此代码示例。它使用-MessageData参数将输入传递到您的操作块。这是他的代码示例:

#Use the -MessageData parameter:

Register-ObjectEvent ... -MessageData $foo

#Access the variable from within the action block

$event.MessageData