Snapshy is an Elixir package for running snapshot tests in ExUnit.
When I was creating Snapshy I didn't know of any package that would support snapshot testing in Elixir. Since, I have found @assert-value's assert_value_elixir, which is more feature-rich and more polished. If you need something very light-weight, Snapshy might be a good choice. However, if you want interactivity and more features, give assert_value_elixir a try :)
Add snapshy
to your list of dependencies in mix.exs
and run mix deps.get
:
def deps do
[
# ...
{:snapshy, "~> 0.2"}
]
end
The way this works:
- Add Snapshy to the test
defmodule TokenizerTest do
+ use Snapshy
use ExUnit.Case
# ...
end
- Replace
test
withtest_snapshot
- test "correctly tokenizes booleans" do
+ test_snapshot "correctly tokenizes booleans" do
# ...
end
- Replace an assertion with simple function call
- assert(
- tokens("true false") == [
- boolean: "true",
- boolean: "false"
- ]
- )
+ tokens("true false")
The first time a snapshot will be created in test/__snapshots__/path/to/test_file/function_name.stub
. The second time, an assertion will be made against the snapshot. If you make changes and you want to update snapshots, run SNAPSHY_OVERRIDE=true mix test
instead of mix test
. Verify in git every change is correct.
Alternatively, you can use a macro call instead of the test_snapshot
macro like so:
test "correctly tokenizes booleans" do
match_snapshot tokens("true false")
end
Careful! There can only be one match_snapshot
call per test macro call.