如何使用Cucumber存根和模拟交互式ruby应用程序?

时间:2014-07-13 16:01:06

标签: ruby testing cucumber aruba highline

我有一个基于Highline gem的交互式CLI应用程序。我可以使用Aruba以交互方式运行它以进行Cucumber测试。但我无法使用存根和模拟,因为Aruba将我的应用程序作为子进程启动。如果我尝试使用Aruba::InProcess功能,则会失去交互性。

我不知道了。我可以用什么方式测试这样的应用程序?

2 个答案:

答案 0 :(得分:0)

你想要什么存根和模拟?

Cucumber主要用于集成测试,即从最终用户的角度进行测试。最终用户通过其界面使用该应用程序,这就是为什么黄瓜不提供简单的方法来抄袭和嘲笑应用程序的内部结构,你也不应该这样做,至少不是黄瓜。

考虑使用固定装置进行黄瓜或使用rspec进行单元测试。

如果你想要隐藏第三方的回复,那么你可以使用webmock gem拦截请求并返回fixtures作为响应,或者使用fakefs来为文件系统做同样的事情。

答案 1 :(得分:0)

好吧,我认为:黄瓜不是关于存根和嘲笑。交互式CLI应用程序可能是最好的例子。 因此,当您需要交互性时,Cucumber通过Aruba在子进程中启动您的应用程序。我发现影响它的唯一方法是使用环境变量。例如,通过使用值'production'/'development'/'test'设置变量,我可以将应用程序的配置更改为使用测试数据库而不是生产等。