有时我必须在Elixir测试中比较多行字符串,并且当所有行都像line1\nline2\nline3
一样内联打印时很难阅读。
我想编写一个自定义测试断言compare
,它在两列中显示LHS和RHS。
作为一个起点,我创建了一个名为compare
的宏,它与assert
相同。
defmodule CompareAssertion do
defmacro __using__(_) do
quote do
require CustomCompare
import CustomCompare
end
end
defmacro compare(assertion) do
case translate_assertion(assertion) do
nil ->
quote do
value = unquote(assertion)
unless value do
raise ExUnit.AssertionError,
expr: unquote(Macro.escape(assertion)),
message: "Expected truthy, got #{inspect value}"
end
value
end
value ->
value
end
end
# ...
end
我有一个函数render_columns(col_a, col_b)
,它将两个字符串并排呈现为列。如何将这两者结合在一起,以便LHS和RHS显示在两列中?
谢谢!