ruby-on-rails - 如何在 Rails 2 自动化测试中的 http 请求后测试对数据库的更改?

标签 ruby-on-rails testing

我正在尝试为 Rails 2.3.5 应用程序编写一个好的、全面的测试套件,但我发现显然在功能测试中每个 http 请求都包含在一个事务中。这意味着您无法在操作运行后测试数据库中发生的更改。我已经发现并正在使用 assert_difference,但这还不够。我想测试关联是否已经建立,这似乎不起作用。这对于内置的 Rails 测试框架来说是不可能的吗?我应该使用集成测试吗?我是否应该将更多的逻辑考虑到我的模型中?我真的不确定我打破了哪个约定,但在这方面我的应用程序确实感觉已经偏离了 rails 。想停止骑在铁路枕木上。 =/

最佳答案

我可能误解了你在做什么,但我有更新数据库的集成测试,然后从数据库中读回这些值并在同一个测试中对它们进行断言。默认情况下(无论如何在 Rails 2.3.5 中)事务应该只在每次测试结束时回滚。

TBH,我发现功能测试对我来说不如集成测试有用。例如,我的测试用户通常需要登录我的应用程序才能执行任何有用的操作,这涉及(在我见过的大多数 Rails 身份验证插件中)调用两个 Controller ——这只能在集成测试中完成。

关于ruby-on-rails - 如何在 Rails 2 自动化测试中的 http 请求后测试对数据库的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4709701/

相关文章:

ruby-on-rails - StandardError重定向到页面

ruby-on-rails - Rails validates_format_of

testing - 即使测试失败,Teamcity 仍显示绿色图标

testing - 走廊可用性测试 : How much of the UI do you actually make functional?

testing - 如何仅将依赖项的功能用于测试?

ruby-on-rails - 如何在没有模型的情况下使用载波?

ruby-on-rails - Rails 3强制使用特定文本的本地化语言

mongodb - 在运行 Mocha 测试之前删除 MongoDB 数据库

testing - TestCafe:无法完成对 url 的请求

Mysql查询优化