2

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

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

4

2 回答 2

0

好的,我认为:Cucumber 与 stub 和 mock 无关。交互式 CLI 应用程序可能是最好的例子。因此,当您需要交互性时,Cucumber 通过 Aruba 在子进程中启动您的应用程序。我发现影响它的唯一方法是使用环境变量。例如,通过使用值“生产”/“开发”/“测试”设置变量,我可以将我的应用程序的配置更改为使用测试数据库而不是生产等。

于 2014-11-10T17:02:07.977 回答
0

你到底想要存根和模拟什么?

Cucumber 主要用于集成测试,即从最终用户的角度进行测试。最终用户通过其界面使用该应用程序,这就是为什么 cucumber 不提供简单的方法来存根和模拟应用程序的内部,您也不应该这样做,至少不应该使用 cucumber。

考虑使用 rspec 进行黄瓜或单元测试的夹具。

如果您想删除来自 3rd 方的响应,那么您可以使用 webmock gem 来拦截请求并将固定装置作为响应返回,或者使用 fakefs 对文件系统执行相同的操作。

于 2014-10-18T23:35:18.647 回答