ruby-on-rails - 测试流程(交叉 Controller )的最佳方法是什么?

标签 ruby-on-rails ruby testing rspec

我们的应用程序中有一个特定的流程,可以对相关数据进行单独调用。它们位于不同的 Controller 中,但与同一用户交互。

我们正在尝试构建测试以确认整个流程是否按预期工作。我们已经为组成部分构建了单独的测试,但想要对整个流程进行测试。

例如,我们有一个用户签到工作(checkin),然后构建一个小部件(widgetize)。我们有一些方法可以在已签到的用户和已使用小部件(和签到)的用户之间过滤我们的用户。我们可以用 FactoryGirl 构建小对象以确保过滤器有效,但我们想要一个测试,让一个用户 checkin ,另一个用户 checkin ,第二个用户 widgetize,这样我们可以确认我们的过滤方法只捕获用户我们希望它能捕捉到。

我的第一个想法是构建一个 rspec 测试,它简单地从 widgetize 规范直接调用 checkin ,然后确认过滤器方法——但我发现 rspec 不允许跨 Controller 调用(或者至少我可以不知道如何让它工作;发布和获取该 Controller 不工作)。另外,人们告诉我这是非常糟糕的做法。

我应该如何进行测试?

最佳答案

本文介绍了如何使用请求规范很好地完成集成测试。

http://everydayrails.com/2012/04/24/testing-series-rspec-requests.html

基本上,您想要使用像 capybara 这样的 gem,这样您就可以模拟用户输入并让您的测试在您的应用中运行,并检查是否一切如您所愿。

关于ruby-on-rails - 测试流程(交叉 Controller )的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13461022/

相关文章:

ruby - 在 Ruby 中调用 self.private_method 不会抛出错误?

ruby-on-rails - 将事件存储文件附加到邮件程序

android - 有没有办法在 Android Eclipse 中测试权限?

windows - polymer 测试在 Windows 机器上永无止境

ruby-on-rails - 当页面有几个相同的链接时, capybara 的 "click_link"方法如何知道点击哪个链接?

ruby-on-rails - 每当 gem cronjob 时如何设置时区

php - 在 Ruby 中编码 URL 参数,并用 php 正确解码它

ruby-on-rails - 枯燥Rails Active Record查询条件

java - 我应该允许 SQL WHERE 子句作为 REST API 参数,在 Internet 上可用吗?

asynchronous - 测试 Mocha/supertest/expect MEAN-stack HTTP 请求延迟 4 秒完成