I wasn’t sure where to put this one
I am using ESpec for my project as I am a ruby dev coming across to elixir and it felt quite natural to me.
I noticed that there are no examples for composable matchers like in rspec and I was wondering if there is an alternative way of doing it either via elixir itself or some undocumented feature of espec.
Here is an example from rspec
expect(my_array).to contain_exactly(a_hash_including(test: 1), a_hash_including(test: 2))
So in this case contain_exactly has other matchers as its value
2 Likes
Maybe this is effectively off topic, but I don’t find that any more readable than.
assert [%{test: 1}, %{test: 2}] = my_array
The function based approach used in ruby is necessary because it doesn’t have macro based meta-programming and thus if you assert foo == bar
in ruby all that assert
knows is that it got false when it expected true, which makes for a crappy error message. The assert macro in Elixir though is smarter than that, and it seems to just obviate the need for this stuff.
3 Likes
Youre probably right. Ive not been doing elixir long so have not harnessed the power of pattern matching in tests yet.
Cheers
1 Like