编写自定义断言宏

时间:2016-04-06 17:14:12

标签: elixir

有时我必须在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显示在两列中?

谢谢!

0 个答案:

没有答案