我想在現有的代碼上寫rspec測驗。現有的代碼是
def getperson>
log_middle('getperson') do
@filteredPersons = Person.where(['UserID=?', @@userID] )
結束。
@filteredPersons end
end @filteredPersons
我想從rspec檔案中賦值@@userID。如何在person_spec檔案中對其進行賦值呢
uj5u.com熱心網友回復:
你可以使用class_variable_set像這里的actionmailer測驗設定(雖然這是MiniTest設定,但想法是一樣的,你也可以用于rspec)。
所以你的測驗案例看起來像這樣
# test_helper。
def with_user_id(user_id)
old_user_id = ClassUnderTest.class_variable_get(:@@userID)
ClassUnderTest.class_variable_set(:@@userID, user_id)
yield
ensure[/span
ClassUnderTest.class_variable_set(:@@userID, old_user_id)
end
#你的測驗
with_user_id(123) do
get_person ...
expect(...)
end
或者如果你不在乎副作用:
# ...
背景關系 "@@userID is 123" do
before(:each) do
ClassUnderTest.class_variable_set(:@@userID, 123)
end
它"should ..."do
getperson ...
expect(...).to ...
end
end
# ...
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/307020.html
標籤:
