2013-09-01 40 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 –