【问题标题】:What would be the best way to test a flow (cross controllers)?测试流程(跨控制器)的最佳方法是什么?
【发布时间】:2012-11-19 19:47:32
【问题描述】:

我们的应用程序中有一个特定的流程,它对相关数据进行单独的调用。它们在不同的控制器中,但与同一个用户交互。

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

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

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

我应该如何进行测试?

【问题讨论】:

  • 这不只是一个标准的集成测试吗?
  • 是的,听起来像是一个集成测试。我建议使用 capybara gem 来完全按照您的描述模拟用户流程。

标签: ruby-on-rails ruby testing rspec


【解决方案1】:

本文介绍了如何使用 request-specs 很好地完成集成测试。

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

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

【讨论】:

  • 在请求规范中使用 capybara 已被弃用。目前的做法是使用Feature Specs
猜你喜欢
  • 2011-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多