如何将值从规范文件传递到控制器
how to pass value from spec file to controller
我想对现有代码编写 rspec 测试。现有代码为
def getperson
log_middle('getperson') do
@filteredPersons = Person.where(['UserID=?', @@userID])
end
@filteredPersons
end
我想从 rspec 文件中分配值 @@userID
。如何在 person_spec 文件
中为其赋值
您可以像 an actionmailer test setup here 一样使用 class_variable_set
(虽然这是 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
ClassUnderTest.class_variable_set(:@@userID, old_user_id)
end
# your test
with_user_id(123) do
get_person ...
expect(...)
end
或者如果您不关心副作用:
# ...
context "@@userID is 123" do
before(:each) do
ClassUnderTest.class_variable_set(:@@userID, 123)
end
it "should ..." do
getperson ...
expect(...).to ...
end
end
# ...
我想对现有代码编写 rspec 测试。现有代码为
def getperson
log_middle('getperson') do
@filteredPersons = Person.where(['UserID=?', @@userID])
end
@filteredPersons
end
我想从 rspec 文件中分配值 @@userID
。如何在 person_spec 文件
您可以像 an actionmailer test setup here 一样使用 class_variable_set
(虽然这是 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
ClassUnderTest.class_variable_set(:@@userID, old_user_id)
end
# your test
with_user_id(123) do
get_person ...
expect(...)
end
或者如果您不关心副作用:
# ...
context "@@userID is 123" do
before(:each) do
ClassUnderTest.class_variable_set(:@@userID, 123)
end
it "should ..." do
getperson ...
expect(...).to ...
end
end
# ...