为什么rspec有这么多种测试?

时间:2013-01-21 22:14:11

标签: ruby-on-rails ruby rspec integration-testing bdd

我很困惑。我应该在控制器文件夹中测试什么?返回成功代码的控制器操作?为什么,如果我可以通过一个命令在集成测试中完成它? 观看测试的内容是什么?要测试视图是否有一些html标签?我也可以在集成测试中做到这一点。

模型需要测试验证规则吗?谢谢你的帮助。

3 个答案:

答案 0 :(得分:1)

如果您对单元(型号)和集成规格感到自信,并且它为您的应用提供足够的覆盖范围,您可以忽略其他应用。如果你正在做那两个我可以告诉你,你做的比平均开发人员多。大多数开发人员也只是使用它们。

但是当你有一个巨大的应用程序时,你应该考虑控制器测试是否有用。我的意思是,在集成测试中,您不应该测试http响应或者某些文本是否在h1 HTML标记内,因为如果您更改视图,则需要更改集成测试,而不是仅仅更改视图测试(如果有)。

有很多类型的测试,因此您可以将您的功能分解为多个部分,然后您就可以看到出现了什么问题。是模特吗?控制器?

但完全不要强迫自己编写你觉得对你没用的测试

答案 1 :(得分:1)

在控制器规范中有更容易实现的测试。

一个例子:

方案: 一个人希望测试对一组视图的授权访问(让我们假设将非授权用户重定向到登录页面)。

集成测试方法: 这可以通过集成测试来测试视图,执行速度往往较慢(访问登录页面,填写凭证字段并按回车,访问页面进行测试......)

控制器测试方法: 可以测试每个控制器的方法并检查响应代码。响应是重定向吗? (代码200)。此外,由于控制器中的方法是rails应用程序的入口点,因此可以肯定控制器规范涵盖了其他视图。

答案 2 :(得分:0)

我使用此指南https://github.com/bbatsov/rails-style-guide#rspec

您可以进行大量的集成测试,但速度非常慢。我喜欢制作很多控制器,模型和视图规格,然后只有几个集成规格。