I disagree that the latter is more declarative than the former. They are
just two different ways of writing the same thing. In fact, they're both
fairly imperative. :)
Pipes are awesome, but IMO they are a tool for convenience, and not the
only way that clean, idiomatic Elixir code can be structured. I think the
number of asserts that you will eventually have to implement here is
another good argument against this, as people reading your code will now
have to know both the standard Elixir operators as well as the names of the
special matchers you create.
I can definitely see your reasons for wanting this, so I think a library
would be welcome, but I'm not in support of this being added to core at
this time.
On Thursday, September 29, 2016 at 6:23:45 AM UTC-4, Jaap Frolich wrote:
>
> Probably you have run into this: if you have slightly more complex tests
> than testing the output of a single function, you need assignment and then
> assert that assignment with an operator. Consider this controller test in
> phoenix:
>
> conn =
> build_conn()
> |> post("/upload_content_cover", params)
>
>
> assert %{"success" => true} = json_response(conn, 200)
>
>
> with an `assert_match` function this translates to the following:
>
> build_conn()
> |> post("/upload_content_cover", params)
> |> json_response(conn, 200)
> |> assert_match(%{"success" => true})
>
>
> I prefer the latter, because it is more declarative.
>
> My issue with using operators in assertions, is that while improving
> readability in some cases, they are not very functional constructs, and
> thus do not compose well. Having a functional equivalent for the
> assertions, makes sense in a functional language in my opinion.
>
> I can also see why this should be a library, keeping the assertion library
> less complex. Just would like to share my thinking. I'm also interested in
> feedback, and how I might be wrong :).
>
> See the following pull request for an implementation:
> https://github.com/elixir-lang/elixir/pull/5259.
>
--
You received this message because you are subscribed to the Google Groups
"elixir-lang-core" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/elixir-lang-core/e69b4293-373b-4105-9ee5-1c2f9e014c44%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.