ruby-on-rails - 如何测试 Rails 中的记录顺序?

标签 ruby-on-rails testing

我发现测试来自数据库的记录是否正确排序非常冗长乏味。 我正在考虑使用数组“==”方法来比较两个搜索数组。数组的元素和顺序必须相同,所以看起来很合适。问题是如果元素缺失,即使它们严格正确排序,测试也会失败。

不知道有没有更好的方法...

最佳答案

rails 4

app/models/person.rb

default_scope { order(name: :asc) }


test/models/person.rb

test "people should be ordered by name" do
  xavier = Person.create(name: 'xavier')
  albert = Person.create(name: 'albert')
  all    = Person.all
  assert_operator all.index(albert), :<, all.index(xavier)
end

rails 3

app/models/person.rb

default_scope order('name ASC')


test/unit/person_test.rb

test "people should be ordered by name" do 
  xavier = Person.create name: 'xavier'
  albert = Person.create name: 'albert'
  assert Person.all.index(albert) < Person.all.index(xavier)
end

关于ruby-on-rails - 如何测试 Rails 中的记录顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8090544/

相关文章:

ruby-on-rails - 如何居中截断字符串?

ruby-on-rails - Michael Hartl 的教程第 6 章 : Failing Test due to Syntax_error on model

JAVA - 无法将 src/test/java 导入到 src/main/java

ruby-on-rails - SOA - 身份验证服务设计

ruby-on-rails - Rails 4 : How to update a collection_select based on another collection_select through AJAX?

testing - 从 Grails 2.0.3 升级到 2.2.1 : Tests Failing

node.js - 如何使用 supertest 测试 Express 应用程序的 POST 请求参数?

java - datajpatest + springframework 测试Sql编码特殊字符在Windows上失败

javascript - 在 Angular 1.5 中不编译嵌套组件的情况下测试组件

ruby-on-rails - 如何测试自定义验证器?