我有多態性屬於項目,任務和子任務的討論。當用戶點擊鏈接「完成討論」時,討論模型的布爾屬性從false變爲true。測試失敗,即使它正在測試的東西正在傳遞
我有TDD-ed與下面的規格,所有雖然布爾值確實改變,規範沒有說,預計錯誤是真實的。
這裏是以下規格。它不符合第73行,表示預期錯誤是真實的。所以我的想法是我寫錯了規格。
5 let!(:user) { FactoryGirl.create(:confirmed_user) }
6 let!(:project) { FactoryGirl.create(:project) }
7 let!(:task) { FactoryGirl.create(:task, :project => project) }
8 let!(:subtask) { FactoryGirl.create(:subtask, :task => task) }
9 let!(:discussion_for_subtask) { FactoryGirl.create(:discussion,
10 :user => user,
11 :discussionable => subtask) }
15
16 before do
17 sign_in_as!(user)
18 user.projects << project
19 end
68 it 'should be able to finish the discussion if they started it/are admin' do
69 visit subtask_discussions_path(subtask)
70 click_link "#{discussion_for_subtask.name}"
71 current_path.should == subtask_discussion_path(subtask, discussion_for_subtask)
72 click_link 'Finish discussion'
73 discussion_for_subtask.finished.should == true
74 current_path.should == subtask_discussions_path(subtask)
75 end
這裏是我的工廠(使用FactoryGirl):
1 FactoryGirl.define do
16
17 # USER
18 factory :user do
19
20 sequence(:name) do |n|
21 "Name#{n}"
22 end
23 sequence(:email) do |n|
24 "FactoryEmailNumber#{n}@example.com"
25 end
26 password 'secret'
27 password_confirmation 'secret'
28
29 factory :confirmed_user do
30 after_create do |user|
31 user.confirm!
32 end
33 end
34
35 end
105 # SUBTASK
106 factory :subtask do
107 sequence(:name) do |n|
108 "Subtask - #{n}"
109 end
110 task
111 end
112
113 # DISCUSSION
114 factory :discussion do
115 sequence(:name) do |n|
116 "Discussion No#{n}"
117 end
118 description "Description for the discussion"
119 end
注意,我沒有添加在工廠「完成」的屬性,正如我在遷移默認選擇是錯誤的。
編輯:這是從假更改屬性設置爲true,當用戶點擊鏈接(從討論控制器)的作用:
33 def finish
34 if current_user.discussions.include?(@discussion)
35 @discussion.update_attribute(:finished, true)
36 redirect_to polymorphic_path([@parent, Discussion])
37 flash[:notice] = "it worked #{@discussion.finished}"
38 else
39 flash[:alert] = 'You must be an admin to do that'
40 end
41 end
你看這個@ discussion.finished在線37?當我使用save_and_open_page手動查看時...
你的規格失效了什麼?有許多應該。 –