提交 a7a3169c 编写于 作者: A Aaron Patterson 提交者: Xavier Noria

fixing assert_difference issues on ruby 1.8

上级 886d0115
......@@ -45,18 +45,19 @@ module Assertions
# post :delete, :id => ...
# end
def assert_difference(expression, difference = 1, message = nil, &block)
exps = Array.wrap(expression).map { |e|
callee = e.respond_to?(:call) ? e : lambda { eval(e, block.binding) }
[e, callee]
expressions = Array.wrap expression
exps = expressions.map { |e|
e.respond_to?(:call) ? e : lambda { eval(e, block.binding) }
}
before = exps.map { |_, block| block.call }
before = exps.map { |e| e.call }
yield
exps.each_with_index do |(code, block), i|
expressions.zip(exps).each_with_index do |(code, e), i|
error = "#{code.inspect} didn't change by #{difference}"
error = "#{message}.\n#{error}" if message
assert_equal(before[i] + difference, block.call, error)
assert_equal(before[i] + difference, e.call, error)
end
end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册