Creating test helpers for ease of testing and debugging
Let’s start off by creating a ControllerCase module right away. This is where we will house all our helper functions, imports, and other behavior required for the tests:
defmodule Goldcrest.ExUnit.ControllerCase do defmacro __using__(_) do quote do use ExUnit.Case use Plug.Test end end end
In the preceding code snippet, we added a __using__/1 macro, which uses two modules, ExUnit.Case and Plug.Test. We will need ExUnit.Case since we will be using ExUnit for tests. We will also need Plug.Test as seen in Chapter 5, as it provides several helpful functions, such as conn/2, get_session/2, and so on, which are needed to properly test a controller.
Let’s start by writing a controller test for TasksWeb.TaskController:
defmodule TasksWeb.TaskControllerTest do &...