2012-09-18 69 views
2

感謝您的迴應。
我得到錯誤的應用Git application with the error水豚NoMethodError:undefined方法`訪問'爲

Failures: 

    1) Page pages page creation with invalid information should not create a page 
    Failure/Error: before(:each) { visit new_admin_page_path } 
    NoMethodError: 
     undefined method `visit' for #<Page:0x00000005094bb0> 
    # ./spec/requests/page_request_spec.rb:13:in `block (3 levels) in <top (required)>' 

    2) Page pages page creation with invalid information error messages 
    Failure/Error: before(:each) { visit new_admin_page_path } 
    NoMethodError: 
     undefined method `visit' for #<Page:0x000000051671f0> 
    # ./spec/requests/page_request_spec.rb:13:in `block (3 levels) in <top (required)>' 

Finished in 1.21 seconds 
14 examples, 2 failures 

我已經錯過了?

+0

你可以發佈你的規範代碼? –

+0

https://github.com/itsNikolay/error/blob/master/spec/requests/page_request_spec.rb(所有文件都在github回購) – itsnikolay

+0

我發現你的問題(見下文),但你會遇到其他問題你修復它。 –

回答

10

我克隆你的倉庫和運行規範。問題在於,您使用術語page來表示兩種不同的東西:水豚頁面(subject { page })和名稱爲Page(您也可以命名爲page)的模型。這兩個名稱相沖突,這就是rspec爲什麼抱怨#<Page:0x00000005094bb0>沒有方法visit的原因。

爲了解決這只是重命名自己創建的頁面在初始let

let(:mypage) { Factory.create(:page) } 

這將避免被命名你的頁面模型mypage而不是page衝突。

但還有其他問題。您的用戶工廠不使用序列來分配電子郵件,因此您會收到驗證錯誤,因爲它表示電子郵件已被佔用。

我改變了你的用戶工廠這樣的:

sequence(:email) { |n| "abc#{n}@example.com"} 
factory :user do 
    email 
    password "foobar" 
    password_confirmation "foobar" 
    ... 

這正好解決了驗證錯誤,但你現在得到另一個錯誤。在你的第一個規範的行中,你應該檢查countPage,而不是記錄page(或mypage)沒有變化。

所以它改成:

expect { click_button "Create Page" }.not_to change(Page, :count) 

這將仍然離開你的錯誤,因爲你還沒有任何create行動爲您PagesController。從你寫的內容來看,似乎這些信息是無效的,所以它甚至不應該採取這種行動。我不知道你在這裏試圖做什麼,所以我會留下剩下的給你。

+0

更新了我的答案,你有一些事情要解決。 –

+0

作品感謝您的幫助! – itsnikolay

+0

呃,謝謝!這已經不是第一次讓我感到困擾,但有時候你可以看看那些顯而易見的東西。我的下一個項目將不會有一個PagesController :-) – Stenerson

3

以下內容添加到您的spec/spec_helper.rb(在你的Spork.prefork塊):

require 'capybara/rspec' 
require 'capybara/rails' 
+1

是得到相同的錯誤。 – itsnikolay

+0

我有同樣的錯誤 – citraL

+0

我會通過shioyama的建議,如果沒有幫助,發佈一個新問題 - 解決方案可能是非常具體到您的設置。 –

相關問題