2013-09-01 62 views
0

我已經寫了一個RSpec測試在我的永久鏈接檢查無效字符:爲什麼我的格式驗證失敗的永久鏈接?

describe "formatting permalinks when creating a page" do 

    it "does not allow crazy characters" do 
     page = create(:page, permalink: '#$%^&*first-title') 
     expect(page).to have(1).errors_on(:permalink) 
    end 

    end 

在我page.rb模式,我有這個驗證實施,使其通過:

class Page < ActiveRecord::Base 

    validates :permalink, format: {:with => /\A[a-zA-Z-]+\Z/, :on => :save!} 

    before_create :create_slug 

    def create_slug 
    self.permalink = self.permalink.parameterize 
    end 
end 

,但我得到了自己的錯誤:

expected 1 errors on :permalink, got 0 

我在做什麼錯?我該如何解決?

回答

1

您的create_slug調用參數化。因爲它是作爲before_create運行的,所以它會將'#$%^ & * first-title'更改爲「first-title」。

另外,according to the docs,on:應該只用於創建和更新,所以我不確定這是否運行。

+0

所以你說的是沒有必要進行驗證? –

+0

即使我刪除驗證,測試仍然失敗。我該如何糾正? –

+0

嘗試刪除:on =>:保存!或者(b)刪除:create_slug before filter –