0
我是Rspec的新手,我正在爲舊項目進行測試。我遇到了設置變量的問題。基本上,我的用戶對象受到之前測試中的操作的影響。 我有一個簡單的用戶工廠:由於之前的測試,Rspec單元測試失敗
FactoryGirl.define do
factory :user do
first_name 'Bob'
last_name 'Shabbadoo'
office
login 'lurker48'
email '[email protected]'
password 'TestWhatNots#21'
password_confirmation{|u| u.password}
end
end
然後,我有我的實際測試的RSpec。
require "spec_helper"
describe User do
it 'has a valid factory' do
FactoryGirl.build(:user).should be_valid
end
describe '#password' do
it "cannot contain the word 'password'" do
valid_user = FactoryGirl.build(:user)
valid_user.password << "password"
valid_user.password_confirmation = valid_user.password
valid_user.should_not be_valid
end
it "cannot contain the users last_name" do
valid_user = FactoryGirl.build(:user)
valid_user.password << valid_user.last_name
valid_user.password_confirmation = valid_user.password
valid_user.should_not be_valid
end
it "cannot contain the users first_name" do
valid_user = FactoryGirl.build(:user)
valid_user.password << valid_user.first_name
valid_user.password_confirmation = valid_user.password
valid_user.should be_valid
end
end
end
我故意做出的「不能包含用戶FIRST_NAME」測試失敗 和我的預期,我得到這個:
User
has a valid factory
#password
cannot contain the word 'password'
cannot contain the users last_name
cannot contain the users first_name (FAILED - 1)
但是,當我花了仔細端詳了它看起來像這樣的密碼:
TestWhatNots#21passwordShabbadooBob
爲什麼以前的測試中的操作會污染信息?
我記得註明HAS_ONE協會名稱爲這個對象調用的工廠,所以這兩個對象應該是不同。 – BroiSatse
是的,你是對的。我不應該擔心這種關聯,因爲我不會像我那樣操縱信息。我使用+ =語法,因爲這隻會在需要時創建一個新字符串。 – BrandonRachal