0
Michael Hartl在Ruby on Rails教程的chapter 6.x教程中,我無法讓Rspec通過email is not present
檢查。Michael Hartl第6章RailsTutorial.org Rspec空白電子郵件檢查
從我有限的知識:
- 的User_spec創建使用的代碼之後才做測試用戶。
- 然後根據
user.rb
中的屬性對該用戶進行檢查,以確定 確定:presence
有效。 - 如果檢查有效,則檢查返回true或false。
- 在接下來的代碼中,之前{@ user.email = 「」}設置電子郵件 空
- 然後說:
it { should_not be_valid }
然而,它失敗User when email is not present
錯誤。
/spec/models/User_spec.rb
require 'spec_helper'
describe User do
before do
@user = User.new(name: "Example User", email: "[email protected]")
end
subject { @user }
it { should respond_to(:name) }
it { should respond_to(:email) }
it { should be_valid }
describe "when email is not present" do
before { @user.email = " " }
it { should_not be_valid }
end
end
spec/models/user.rb
class User < ActiveRecord::Base
validates :name, presence: true
validates :email, presence: true
end
失敗:
1) User when email is not present Failure/Error: it { should_not be_valid } expected # not to be valid # ./spec/models/user_spec.rb:18:in `block (3 levels) in '
Finished in 0.03278 seconds 4 examples, 1 failure Failed examples: rspec ./spec/models/user_spec.rb:18 # User when email is not present
空白字符串與空字符串不同,我正確嗎?那麼電子郵件=「」}只是檢查一個空白的框,而不是如果電子郵件是空的?我有什麼意義嗎?哈哈 – TheBetterJORT
嗯,我會用空白和空來表示同樣的事情,因爲空間仍然是一個角色。你的例子中的字符串是''「' - 注意空間。根據rails,這是一個非空字符串,它也不是空白。 –
澄清:在rails中,'「」.blank? ==「」.empty? == true',但是'「」.blank? == true; 「」.empty? ==假'!換句話說,包含空格**的字符串是空白**,但是**不是空**。 –