2011-12-23 25 views
1

我正在使用Rails,Rspec和Factory Girl的最新版本,當我嘗試測試創建或更新邏輯時遇到了一個奇怪的問題。有問題的控制器是Admin命名空間的PostsController,模型是Post。工廠本身只是創建一個標題和一個主體。Rspec創建/更新未知屬性錯誤

describe 'create' do 
before :all do 
    @new = Factory.build(:post) 
end 

it 'should be successful' do 
    post :create, :post => @new 
    response.should be_success 
end 

describe 'failure' do 
    it 'should not create a new page' do 
    lambda do 
     post :create, :post => @new 
    end.should_not change(Post, :count) 
    end 

    it 'should render the new template' do 
    post :create, :post => @new 
    response.should render_template('new') 
    end 
end 

我不斷收到的錯誤是:

ActiveRecord::UnknownAttributeError: unknown attribute: post

我可能做一些愚蠢至極,但我只是失去了現在。

UPDATE

萬一人都不應越過此絆倒......

我在做一些愚蠢至極。我在我的控制器有一個錯誤,而不是調用Post.new(params [:post]),我打電話Post.new(params)...

+0

順便說一句,我知道上面的兩個測試會失敗,但我希望他們失敗的原因是正確的。我的計劃是一旦確定一切正常,我就回去添加一個真正的失敗案例。 – PetrolMan 2011-12-23 17:41:22

回答

2

這將有助於知道哪條線路失敗。如果它在'before:all'塊中失敗,那麼問題可能出現在你的工廠代碼中,這可能是爲模型的一個不存在的'post'屬性指定了一個值。

如果這是工廠正在做的事情,但'post'屬性實際上應該存在,那麼也許你從命令行使用rspec來運行此命令,而不首先運行rake db:test:prepare。在這種情況下,您的'帖子'表格結構可能不是最新的。

+0

它在帖子上失敗:每次創建一行。我已經運行db:test:prepare,並且我已經檢查過(只是因爲...)以確保數據庫中的所有內容都是最新的。 – PetrolMan 2011-12-23 18:19:50