我使用帶rspec和shoulda的Rails3。我有以下規格assigns_to不適用於Rails 3在Ubuntu上Shoulda
describe PagesController, "on GET to show while logged off" do
before(:each) do
@site = Factory.create(:site)
@site.domains << Factory.create(:domain)
@site.save!
@site.pages << Factory.create(:page)
@site.menus << Factory.create(:menu, {:site=>@site, :is_visible=>true})
@site.menus << Factory.create(:menu, {:site=>@site, :is_visible=>true})
@site.menus << Factory.create(:menu, {:is_visible=>false, :site=>@site})
get :show
end
it { should render_template(:show) }
it { should render_template('layouts/2col') }
it { should assign_to(:site) }
it { should assign_to(:site).with(@site) }
it { should assign_to(:site).with(@site) }
it { should assign_to(:page).with(@site.pages[0])}
it "show visible menu_items only" do
assert assigns[:menu_items].length == 2
end
end
這裏是我的寶石文件
group :development, :test do
gem 'autotest'
gem 'factory_girl'
gem 'rspec', '>=2.0.0.beta.19'
gem 'rspec-rails', '>=2.0.0.beta.17'
gem 'shoulda'
end
,這裏是我的spec_helper
require 'rspec/rails'
require 'shoulda'
require 'shoulda/integrations/rspec2'
require 'authlogic/test_case'
require 'factory_girl
好到目前爲止一切都非常接近的比賽我所見過的,但是每當我運行我的測試我得到如下錯誤
1) PagesController on GET to show while logged off
Failure/Error: it { should assign_to(:site) }
Expected action to assign a value for @site
# ./spec/controllers/pages_controller_spec.rb:19
我的第一個想法是代碼被破壞,但是應用程序運行正確。另外,如果我測試通過使用assigns [:site]分配值,則測試通過。
有沒有人有任何想法我需要改變,以使這些測試再次開始工作。
在此先感謝
安迪
不錯的一個,令人驚訝的RSpec的早該文檔非常與測試版本相比較弱。它需要我晚上才能弄清楚這一點,因爲Rails 2使用相同的代碼。 – 2010-09-20 07:02:57
即使指定了主題,我的shoulda-matchers是(1.0.0.beta1)rspec 2.4.0 – Samnang 2011-02-12 11:13:21
是的,不是爲我工作:(試圖找出原因 – 2011-02-21 22:31:56