我们的应用程序中有一个特定的流程,可以对相关数据进行单独调用。它们位于不同的 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/