嗨,我目前正在玩黄瓜/阿鲁巴测试,到目前为止真的很喜欢。但我偶然发现了一个交互性问题。
我的应用程序监视文件夹的更改,并在此刻简单地打印“文件已更改”之类的内容。
如果我键入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"