Testing macros
In this section, we'll be checking out how to create tests for macros. Particularly, we'll be adding a test for the defchrono
macro that we created in Chapter 6, Metaprogramming – Code that Writes Itself. Like the last section, where we added tests for our Phoenix Channels, this section isn't related to a type of testing, but rather related with showing how to test a particular component we've created.
The most common and effective approach to test macros is to assert on the behavior of the code generated by the macro, and not on the code generation itself. Testing the generated AST directly often leads to brittle and unmanageable tests. These tests can be seen as unit tests for macros, because they're testing the macro expansion itself. Our focus should be on integration tests for macros. This means that we'll create a test module, with the sole purpose of calling use
on our macro, and then place assertions on this test module. Let's check the code for this test:
$ cat apps...