JSON APIをテストしています。そして最近まで、私はレコードがID順に返されると仮定しました。データベースレコードがID順であるかどうかをテストする方法は?
it 'takes "limit" param' do
post1 = create :post
post2 = create :post, user_id: post1.user_id
get user_posts_path(post1.user_id, limit: 1)
expect(response.body).to be_json_eql([{id: post1.id}].to_json).including(only: :id)
end
は、私はおそらく次のテストを追加することができます:Posts.all
がPosts.where(user_id: params[:user_id])
になったときにしかし、それは次の試験破った
it 'returns records ordered by id' do
post1 = create :post
post2 = create :post, user_id: post1.user_id
get user_posts_path(post1.user_id)
expect(response.body).to be_json_eql([{id: post1.id}, {id: post2.id}].to_json).including(only: :id)
end
を、それはコントローラに.order(:id)
を追加せずに成功しました。私はそこにいることを確認したいと思います。私は何をしますか?
あなたのテストでは、どのようにコード化されたのではなく、動作を検証する必要があると思います。疑問は、どのようにして偽陽性を排除できますか? –
確かに、私はコントローラーに何があるのか気にしない、私は結果が必ずIDで注文されるようにしたい、いつも、一般的ではない。 –