Ruby 黄瓜/阿鲁巴交互测试

Ruby 黄瓜/阿鲁巴交互测试,ruby,cucumber,command-line-interface,thor,aruba,Ruby,Cucumber,Command Line Interface,Thor,Aruba,嗨,我现在正在进行黄瓜/阿鲁巴测试,到目前为止我非常喜欢。但我偶然发现了一个互动性的问题 我的应用程序监视文件夹的更改,并在此时打印类似“文件已更改”的内容 如果我键入jsbreeze watchfool foo应用程序将开始监视我的文件夹并将其打印到控制台: “观看:富” 我可以很容易地用黄瓜/阿鲁巴做这样的测试: Scenario: jsbreeze should be able to watch a folder Given a directory named "foo"

嗨,我现在正在进行黄瓜/阿鲁巴测试,到目前为止我非常喜欢。但我偶然发现了一个互动性的问题

我的应用程序监视文件夹的更改,并在此时打印类似“文件已更改”的内容

如果我键入
jsbreeze watchfool foo
应用程序将开始监视我的文件夹并将其打印到控制台:

“观看:富”

我可以很容易地用黄瓜/阿鲁巴做这样的测试:

Scenario: jsbreeze should be able to watch a folder
    Given a directory named "foo"
    When I run `jsbreeze watchFolder foo` interactively
    And I wait for output to contain "Watching: foo"
但我实际上想测试它是否检测到了变化,所以我希望我可以这样做

Scenario: jsbreeze should be able to watch multiple folders
    Given a directory named "foo"
    When I run `jsbreeze watchFolder foo,.` interactively
    And I wait for output to contain "Watching: foo,."
    Then I run `touch foo/test.js`
    And I wait for output to contain "Change detected"
但这似乎不起作用。我想这是因为我的应用程序在那一刻以交互方式运行,所以我不能真正运行像touch这样的命令。有没有人曾经遇到过这样的问题,并且可能知道如何解决

github上有完整的代码:

非常感谢您的帮助

编辑:我取得了一点进步

我创建了一个新步骤,生成了一个childprocess,然后执行touch命令。我可以清楚地看到被触摸的文件是在foo文件夹中创建的,但是我的场景仍然看不到输出

我的步骤如下所示:

When /^I run "([^"]*)" in a new process$/ do |command|
    @process = ChildProcess.send(:build,*command.split(' '))
    @process.start
    sleep 10
end
我的设想是:

Scenario: jsbreeze should be able to watch multiple folders
    Given a directory named "foo"
    When I run `jsbreeze watchFolder foo,.` interactively
    And I run "touch tmp/aruba/foo/test.js" in a new process
    And I wait for output to contain "Change detected"