我该如何测试我的Rails应用程序?

时间:2012-04-02 01:48:39

标签: ruby-on-rails testing rspec

在过去的几天里,我一直在慢慢地将测试添加到现有的rails应用程序中,我一直在努力。

我只想弄清楚多少以及什么样的测试(单元,功能,集成)足以节省我调试和修复破坏现有功能的部署的时间。

我是唯一一个在这个应用程序上工作的人。它基本上是一个小公司(约20名员工)的库存管理数据库。我没有从一开始就添加测试,因为我没有真正看到这一点,但我有一些部署在最后一点点搞乱现有的功能,所以我认为添加可能是件好事。 / p>

我是否需要单独测试我的模型和控制器并执行集成测试?似乎有开发人员认为你应该只进行集成测试和回溯来找出错误,如果你从那里得到错误。

到目前为止,我正在使用RSpec + Factory Girl + Shoulda。这使得为​​模型设置测试变得非常容易。

我现在开始使用控制器而且失去了一点点。我知道如何测试单个控制器,但我不知道是否应该使用集成测试来测试应用程序流,因为这会同时测试控制器。

3 个答案:

答案 0 :(得分:3)

我使用集成测试来测试成功路径和一般故障路径,但是对于边缘情况或更深入的场景,我会编写模型/视图/控制器测试。

我通常在编写应用程序中的功能之前编写测试,但如果您想在之后添加测试,那么我建议使用类似SimpleCov的内容来查看应用程序的哪些区域需要更多测试并慢慢构建测试适用于您的申请。

答案 1 :(得分:1)

在已经编写应用程序之后编写测试将变得乏味。至少应该测试集成情况(将测试大多数控制器功能和视图),并且还单独建模测试,以便模型调用按照您认为应该的方式工作。

对于集成测试,我发现Capybara易于使用。

答案 2 :(得分:0)

根据经验,大多数测试需要是单元测试,一些功能测试,几乎不需要集成。

Rails全心全意地坚持这一点,你也应该这样做。

至少你必须:

  • 每个模型的单元测试,为每个模型中的每个验证添加一个测试用例,最后添加最后一个以确保模型已保存。如果您在相关模型(dependant: :destroytouch: true)上有has_manybelongs_to等内容,请为其添加测试用例。
  • 每个控制器的功能测试。每个操作的测试用例。某些操作可能有多个响应(例如422错误),因此添加另一个案例来测试错误响应。如果您有授权过滤器,也请测试它们。

然后,您可以对典型的新用户流进行集成测试。喜欢 注册 - >创建帖子 - >查看它 - >登出。另一个是确保未经授权的用户无法访问您的资源。

从现在开始,如果没有上述测试,请不要提交任何代码。

植树的最佳时间是10年前,现在是第二好的时间,所以开始测试了!