2014-03-31 51 views
0

我在書中沿以下,每天的Rails測試使用RSpec,它利用了assigns我不知道是什麼RSpec的分配呢,我的測試失敗

it "assigns the requested Category to @category" do 
    category = FactoryGirl.create(:category) 
    binding.pry 
    get :edit, id: category 
    expect(assigns(:category)).to eq category 
end 

然而,我測試失敗,所以我用撬挖(如上所示)

[1] pry(#<RSpec::Core::ExampleGroup::Nested_1::Nested_3::Nested_1>)> category 
=> #<Category id: 83, name: "Example category", user_id: 1, created_at: "2014-03-31 12:25:45", updated_at: "2014-03-31 12:25:45", amount: nil, group_id: nil, amount_in: nil, amount_out: nil> 

..ok,類別很好。大!但是,我不確定assigns實際上做了什麼,並且找不到它的文檔,因爲我不知道它屬於哪裏(RSpec?FactoryGirl?)。這是我得到的結果:

[2] pry(#<RSpec::Core::ExampleGroup::Nested_1::Nested_3::Nested_1>)> assigns(:category) 
=> nil 

..並且它是零。如果這件事很明顯,有人能指出我在正確的方向嗎?甚至可以解釋一下在這裏(或者是爲了做什麼)實際做的事情,我會非常感激。另外,assigns的文檔在哪裏?

+0

https://github.com/rspec/rspec-rails#assignkey-val –

回答

1

assigns實際上是Rails功能測試框架的一部分。這是一種訪問您在控制器中分配的實例變量(@變量)的方法 - 如果您從未在控制器操作中設置@category,則assigns(:category)將爲零。

有關assigns的更多信息,請查看Ruby on Rails指南的this section以進行測試。完整的文檔在ActionController::TestCase documentation

0

在調用控制器之後,您應該從分配中得到什麼,應該是控制器設置爲實例變量的值。你可以看到它像使用@category。因此,使用FactoryGirl創建的類別不等於您的控制器創建的類別(在這種情況下,您的操作似乎在您的實例變量中返回nil值)

相關問題