0

コントローラーの新しいアクションには、次の rspec2 テスト ケースがあります。

describe "GET #new" do
  it "should assign new project to @project" do
    project = Project.new
    get :new
    assigns(:project).should eq(project)
  end
end

次のエラーが表示されます

  1) ProjectsController GET #new should assign new project to @project
     Failure/Error: assigns(:project).should eq(project)

       expected: #<Project id: nil, name: nil, company_id: nil, created_at: nil, updated_at: nil>
            got: #<Project id: nil, name: nil, company_id: nil, created_at: nil, updated_at: nil>

       (compared using ==)

       Diff:#<Project:0x007f461c498270>.==(#<Project:0x007f461c801c90>) returned false even though the diff between #<Project:0x007f461c498270> and #<Project:0x007f461c801c90> is empty. Check the implementation of #<Project:0x007f461c498270>.==.
     # ./spec/controllers/projects_controller_spec.rb:19:in `block (3 levels) in <top (required)>'

Finished in 1.21 seconds
13 examples, 1 failure, 10 pending

Failed examples:

rspec ./spec/controllers/projects_controller_spec.rb:16 # ProjectsController GET #new should assign new project to @project

==代わりに onを使用するとeq、次のエラーが発生します

  1) ProjectsController GET #new should assign new project to @project
     Failure/Error: assigns(:project).should == project
       expected: #<Project id: nil, name: nil, company_id: nil, created_at: nil, updated_at: nil>
            got: #<Project id: nil, name: nil, company_id: nil, created_at: nil, updated_at: nil> (using ==)
       Diff:#<Project:0x007f461c4f5420>.==(#<Project:0x007f461c63b280>) returned false even though the diff between #<Project:0x007f461c4f5420> and #<Project:0x007f461c63b280> is empty. Check the implementation of #<Project:0x007f461c4f5420>.==.

ここで何が間違っているのですか、事前に感謝します

私は〜に乗っています

  • Rails3
  • Rspec2
4

1 に答える 1

1

新しいアクションにアクセスする前に新しいプロジェクトを作成していますが、これは不要です。あなたのコントローラーは実際にそれをすでに行っています。あなたが直面している問題は、2 つの新しいプロジェクトが作成されていることです (あなたの場合、最初に Project:0x007f461c498270 を作成し、次に Project:0x007f461c801c90 を作成しました。それらは同じ属性を持っていますが、異なるプロジェクトです)。このテストに合格する必要があります。

describe "GET #new" do
  it "assigns a new Project to @project" do
    get :new
    assigns(:project).should be_a_new(Project)
  end
end
于 2013-02-06T12:15:06.713 に答える