在测试方法中运行 for 循环可以(概念上)吗?
我想测试控制器中的一系列参数值,以确定不同的输入是否返回正确的值。
test "logged in user - add something - 0 qty" do
@app = Factory.create(:app)
(0..5).each do |t|
@qty = t
login(:user)
get :add. :id => @app.id, :qty => @qty
assert_nil(flash[:error])
assert_response :redirect
assert_redirect_to :controller => :apps, :action => :show, :id => @app.id
if @qty = 0
assert_equal(Invite.all.count, @qty + 1)
else
assert_something .........
end
end
类似的事情。
我通常尝试避免测试代码中任何类型的条件语句或循环。您希望测试尽可能简单,如果您开始在测试中包含逻辑,则必须进行测试them以确保它们按设计工作。我会将循环分解为单独的测试用例,这样如果其中任何一个失败,就可以更轻松地准确找出导致失败的输入。当测试失败时,导致失败的原因应该立即显而易见。您不必分析测试代码来找出答案。
Update:
我确实想补充一点,有一些极其罕见您希望在测试用例中存在循环的情况。一个具体的例子是当您测试并发问题时。这是一般规则的一个例外,您应该有一个非常充分且易于理解的理由来在测试中使用任何类型的逻辑。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)