我有一個自定義的驗證方法,使用正則表達式匹配用戶輸入,然後拋出一個錯誤,如果失敗。自定義驗證方法和rspec測試
進出口試圖理解爲什麼以下情形通過但第二示例引發
undefined method match
實施例1(通過)
# Custom Validation
def format_mobile
regexp = "/^(07[\d]{9})$/"
if !(mobile_no.match(regexp))
errors[:base] << "Please check your Mobile Number"
end
end
# rspec test
it 'is invalid with an Invalid mobile number (Company)' do
user = FactoryGirl.build(:user, company_form: true, mobile_no: '078055031888')
user.format_mobile
expect(user.errors[:base]).to include("Please check your Mobile Number")
end
實施例2(引發Error)
# Custom Validation
def format_mobile
regexp = "/^(07[\d]{9})$/"
if !(mobile_no.match(regexp))
errors[:base] << "Please check your Mobile Number"
end
end
# rspec test
it 'is invalid with a nil mobile number (Company)' do
user = FactoryGirl.build(:user, company_form: true, mobile_no: nil)
user.format_mobile
expect(user.errors[:base]).to include("Please check your Mobile Number")
end
任何關於爲什麼第二次失敗的指針將不勝感激,並且我將如何得到那te ST通
感謝
編輯
所以這將通過測試,如果說mobile_no 07805362669是提供
def format_mobile
regexp = /^(07[\d]{9})/
if !(regexp.match(mobile_no))
errors[:base] << "Please check your Mobile Number"
end
end
但如果mobile_no是測試爲零仍未
看看params如果沒有mobile_no沒有輸入它通過「mobile_no」=>「」,這仍然是零雖然不是嗎?
作爲一個方面的問題的另一種方式,你問「看PARAMS如果沒有mobile_no沒有輸入它作爲‘mobile_no’=>‘’過去了,這仍然是零,雖然心不是它?'不,空字符串不是零。然而,你說得對,空字符串與正則表達式不匹配,所以我很困惑爲什麼japed的答案不適合你。 – dcorking 2014-10-07 14:51:09