【发布时间】:2012-11-19 19:47:32
【问题描述】:
我们的应用程序中有一个特定的流程,它对相关数据进行单独的调用。它们在不同的控制器中,但与同一个用户交互。
我们正在尝试构建一个测试来确认整个流程是否按预期工作。我们已经为组成部分构建了单独的测试,但想要对整个流程进行测试。
例如,我们有一个用户签到工作(签入)然后构建一个小部件(widgetize)。我们有一些方法可以过滤我们的用户,这些用户已签入,以及已小部件化(和签入)的用户。我们可以使用 FactoryGirl 构建小对象以确保过滤器正常工作,但我们想要一个测试,让一个用户签入,另一个用户签入,第二个小部件化,以便我们可以确认我们的过滤方法只捕获用户我们希望它捕获。
我的第一个想法是构建一个 rspec 测试,它只是从 widgetize 规范中直接调用 checkin,然后确认过滤方法——但我发现 rspec 不允许跨控制器调用(或者至少我可以不知道如何使它工作;发布和获取该控制器不起作用)。此外,人们告诉我这是非常糟糕的做法。
我应该如何进行测试?
【问题讨论】:
-
这不只是一个标准的集成测试吗?
-
是的,听起来像是一个集成测试。我建议使用 capybara gem 来完全按照您的描述模拟用户流程。
标签: ruby-on-rails ruby testing rspec