晚上好老鄉編碼器,Rspec的驗證測試的更新
我慢慢設法和交手Rspec的大部分我的驗證發生在創建用戶後,你可以從下面的驗證看,這裏是整個驗證部分到目前爲止。
#validations for common attributes
validates :email, presence: true, on: :create, uniqueness: true,
:format => /@/
validates :password, presence: true, on: :create, length: {minimum: 6}
#validations blocks for dev
with_options :if => lambda { |o| o.role_type == "developer" } do |dev|
dev.validates :first_name, presence: true, on: :update
dev.validates :last_name, presence: true, on: :update
dev.validates :languages, presence: true, on: :update
dev.validates :dev_desc, presence: true, on: :update
dev.validates :github, presence: true, on: :update,
:format => URI::regexp(%w(http https github))
dev.validates :stackoverflow, presence: true, on: :update,
:format => URI::regexp(%w(http https stackoverflow))
dev.validates :level, presence: true, on: :update
dev.validates :street, presence: true, on: :update
dev.validates :city, presence: true, on: :update
dev.validates :state, presence: true, on: :update
dev.validates :postcode, presence: true, on: :update
end
#validations block for employer
with_options :if => lambda { |o| o.role_type == "employer" } do |e|
e.validates :company_name, presence: true, on: :update,
uniqueness: true
e.validates :employer_desc, presence: true, on: :update
e.validates :area_of_focus, presence: true, on: :update
e.validates :number_of_employees, presence: true, on: :update
e.validates :street, presence: true, on: :update
e.validates :city, presence: true, on: :update
e.validates :state, presence: true, on: :update
e.validates :postcode, presence: true, on: :update
end
現在我有我目前的測試,下面是失敗的:如果他們不是完全有效的
it "should not be valid with blank firstname" do
dev.first_name = ' '
dev.should_not be_valid
end
用戶被重定向到編輯頁面。我不明白爲什麼它不通過。我扭轉它,並將其更改爲應通過測試。
可能有人也許解釋了爲什麼它的傳球,這裏是用於開發該塊:
let(:dev) { FactoryGirl.create :dev }
更新:這裏是我的工廠,不知道這將如何影響錯誤:
factory :dev, class: User do
first_name { Faker::Name.first_name }
last_name { Faker::Name.last_name }
email { Faker::Internet.email }
password "12345678"
password_confirmation "12345678"
role_type "Developer"
dev_desc "New to development but trying to help the community"
github "www.github.com"
stackoverflow "www.stackoverflow.com"
languages "Rails"
level "Junior"
street {Faker::Address.street_address}
city {Faker::Address.city}
state {Faker::Address.state}
postcode {Faker::Address.zip_code}
end
感謝您的幫助,試圖瞭解這一點,因爲驗證在註冊後可以手動使用。
我仍然看不到你得到什麼錯誤 –