3

嗨,我目前正在玩黄瓜/阿鲁巴测试,到目前为止真的很喜欢。但我偶然发现了一个交互性问题。

我的应用程序监视文件夹的更改,并在此刻简单地打印“文件已更改”之类的内容。

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

“观看: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上: github-link

非常感谢每一个帮助

编辑:我取得了一点进展

我创建了一个新步骤,它产生一个子进程,然后执行 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"
4

0 回答 0