質問

ActiverCordの範囲を取得するコントローラーインデックステストがあります。テストは現在、このように見えます(インラインデバッグを含むものを含む):

describe "GET index" do
  it "assigns all schools as @schools" do
    get :index
    puts assigns(:schools).class
    puts School.populated.class
    assigns(:schools).should == School.populated
  end
end

出力はこれです:

ActiveRecord::Relation
ActiveRecord::Relation

expected: []
     got: [] (using ==)
Diff:

RailsとRSPECの最近のバージョンでこれを行ったのはこれが初めてではありません。以前は同僚がアイテムを包むだけでした to_a それらを比較するために、私は少し汚れていると思うでしょう、そしておそらく良い解決策ではありません。

何か案は?なぜそれが違うと思うのか、そしてこの同じテストが古いバージョンのRailsおよび/またはRSPECでどのように渡されたかについて興味があります。

役に立ちましたか?

解決

EQL と同じです ==. 。 RSPEC Talksの著者は使用しないだけです !=, 、 使用する いけない 代わりは

actual.should == expected
#is interpreted as this:

actual.should.==(expected)

#This is not true for !=. Ruby interprets this: actual.should != expected
#as follows:

!(actual.should.==(expected))

アップデート: :関係は怠zyな負荷パターンを提供するため、ステップで実行されたクエリはありません。これは、最初のリクエストでクエリの火災を意味します

他のヒント

配列を比較したい場合は、書く必要があります

 assigns(:schools).all.should =~ School.populated.all
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top