Cucumber 由外部编辑器编辑的测试tmp文件

Cucumber 由外部编辑器编辑的测试tmp文件,cucumber,aruba,Cucumber,Aruba,我有一个功能,可以打开用户编辑器(在$editor中指定),在/tmp中的某个地方有一个空的临时文件。用户必须保存此文件,如果它更改了内容,则应使用该临时文件运行另一个命令 When I run `app new` And I the user enters and saves text Then "another-app --process <tmpfile>" should be run 当我运行'app new'时` 用户输入并保存文本 然后应该运行“另一个应用程序--进程”

我有一个功能,可以打开用户编辑器(在
$editor
中指定),在
/tmp
中的某个地方有一个空的临时文件。用户必须保存此文件,如果它更改了内容,则应使用该临时文件运行另一个命令

When I run `app new`
And I the user enters and saves text
Then "another-app --process <tmpfile>" should be run
当我运行'app new'时`
用户输入并保存文本
然后应该运行“另一个应用程序--进程”
我已经有了检查命令是否运行的步骤,这给我留下了两个问题:

  • 如何以非交互方式编辑此临时文件
  • 我的cuke如何知道随机临时文件名以检查是否运行了正确的命令

  • 注意:我已经设置了一个fakebin解决方案,因此我可以将
    $EDITOR
    设置为一个脚本,该脚本只会向指定的文件输出一些文本。这可能是(1)的一个解决方案,但这仍然留给我(2)。

    1很容易,因为它只是一个更改文件的命令。无论是编辑器还是sed还是其他什么都不重要。您可以对调用命令的对象进行单元测试,以确保它运行
    $EDITOR path/to/file
    ,但验收测试不应该关心这一点2也很容易,因为Cucumber不必知道运行的命令。这是一个单元测试。Cucumber应该只观察外部效果(创建了一些文件,屏幕上显示了一些输出,等等)

    让Cucumber观察用户看到的情况。让您的单元测试检查这是如何发生的