2

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

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

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

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

我应该如何进行测试?

4

1 回答 1

0

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

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

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

于 2012-11-19T20:41:05.610 回答