jjh42 / mock

Mocking library for Elixir language
MIT License
646 stars 81 forks source link

Implement assert_called as first class assertion, displays calls on failure #85

Closed mtrudel closed 6 years ago

mtrudel commented 6 years ago

Fixes #78.

Defines an assertion which displays calls actually made when it fails. Example:

defmodule Example do
  use ExUnit.Case

  import Mock

  test "example" do
    with_mock String,
      [reverse: fn(x) -> 2*x end,
       length: fn(_x) -> :ok end] do
      String.reverse(3)

      # Passes...
      assert_called(String.reverse(3))

      # Fails with ExUnit error:
      #
      # Expected call but did not receive it. Calls which were received:
      #
      # 0. Elixir.String.reverse(3) (returned 6)
      #
      assert_called(String.reverse(2))
    end
  end
end
coveralls commented 6 years ago

Coverage Status

Coverage remained the same at 100.0% when pulling eedf6b42128311c4ccdb74f8607e14c24f413315 on mtrudel:master into 888997c94a064cce2f2229546f108b54a9eedfe4 on jjh42:master.

Olshansk commented 6 years ago

This is awesome. Thanks @mtrudel!