One thing that can be used is asserting on the return value of 
Process.info(self(), :messages) - I consider it a bit "dirty", but it allows 
easily asserting on the order of messages. I used it couple times in tests, 
where the order of messages was important.

Michał.

On 11 Feb 2018, 21:54 +0100, Tobias Pfeiffer <[email protected]>, wrote:
> Other messages would interfere there though. Although one could give it
> an ignore option and then apparently it'd even keep. I like it for my
> purposes (thanks!) - however as often messages are async/valid in many
> different orders I'm not sure that's best for everybody.
>
> On 02/11/2018 06:35 PM, Louis Pilfold wrote:
> > You could just get the entire mailbox as a list and then. assert mailbox
> > == [1, 2, 3]
> > No extra macros required.
> >
> > Cheers,
> > Louis
> >
> >
> > On Sun, 11 Feb 2018, 15:59 José Valim, <[email protected]
> > <mailto:[email protected]>> wrote:
> >
> > How is that different from asserting each of them was received
> > followed by a refute_received _? My concern about such helper is
> > that it may imply an ordering which we likely won’t assert. Although
> > one could argue the same about multiple assert_received calls.
> >
> > On Sun, Feb 11, 2018 at 16:04 Tobias Pfeiffer <[email protected]
> > <mailto:[email protected]>> wrote:
> >
> > Hello everyone,
> >
> > I've happily been using a little helper for quite some time and
> > Devon
> > liked it as well so thought might propose it:
> >
> > I often want to make sure that a bunch of messages were received but
> > exactly these messages and no more.
> >
> > Enter assert_received_exactly - it gets a list of expected
> > messages and
> > it expects that each of them arrives no more than specified. (as
> > always
> > sorry if something like this has been proposed before, haven't seen
> > anything)
> >
> > E.g.
> >
> > assert_received_exactly [:foo, :foo, :bar]
> >
> > passes if we received :foo 2 times and :bar one time. It fails if we
> > receive :foo or :bar more often or less often.
> >
> > Other usage example at [1].
> >
> > In the current implementation [2] receiving :baz won't fail the
> > test as
> > only expected values are checked. This is currently done because
> > there
> > are some messages being received that have nothing to do with the
> > current thing under test (I stub out some interactions with dummy
> > modules that send messages instead of doing work like [3]).
> >
> > I realize it's a very thin wrapper atm but having it part pf ExUnit
> > would probably still help people and make tests better overall.
> >
> > Happy to try & convert it to a macro and PR it if this helper is
> > desired
> > :) (probably also with more custom error messages)
> >
> > Thanks for considering and for great community work and a great
> > language! :)
> > Tobi
> >
> > [1]
> > https://github.com/PragTob/benchee/blob/3b60c17b067a7e7503cb0fb6e40bdc92ffde3fbd/test/benchee/benchmark/runner_test.exs#L854-L867
> > [2]
> > https://github.com/PragTob/benchee/blob/master/test/support/test_helpers.ex#L23-L29
> > [3]
> > https://devonestes.herokuapp.com/my-new-favorite-elixir-testing-trick
> > --
> > http://www.pragtob.info/
> >
> > --
> > 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]
> > <mailto:elixir-lang-core%[email protected]>.
> > To view this discussion on the web visit
> > https://groups.google.com/d/msgid/elixir-lang-core/e9f08407-830b-0e38-db5d-34d0672f247c%40gmail.com.
> > For more options, visit https://groups.google.com/d/optout.
> >
> > --
> >
> >
> > *
> > *José Valim*
> > www.plataformatec.com.br <http://www.plataformatec.com.br/
> > Founder and *
> > Director of R&D
> > *
> > *
> >
> > --
> > 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]
> > <mailto:[email protected]>.
> > To view this discussion on the web visit
> > https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4JunuWKNwUkuqPD6-fOCLC_WZDLas%2BsmKHE4L978uNzMg%40mail.gmail.com
> > <https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4JunuWKNwUkuqPD6-fOCLC_WZDLas%2BsmKHE4L978uNzMg%40mail.gmail.com?utm_medium=email&utm_source=footer>.
> > For more options, visit https://groups.google.com/d/optout.
> >
> > --
> > 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]
> > <mailto:[email protected]>.
> > To view this discussion on the web visit
> > https://groups.google.com/d/msgid/elixir-lang-core/CABu8xFDhvvijR%3DETv7TFP7cODfgAFGjGjn5iKGpNfTP_aa%3DV-Q%40mail.gmail.com
> > <https://groups.google.com/d/msgid/elixir-lang-core/CABu8xFDhvvijR%3DETv7TFP7cODfgAFGjGjn5iKGpNfTP_aa%3DV-Q%40mail.gmail.com?utm_medium=email&utm_source=footer>.
> > For more options, visit https://groups.google.com/d/optout.
>
> --
> http://www.pragtob.info/
>
> --
> 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/024a4453-7e1c-3162-8c39-351bc1ab9713%40gmail.com.
> For more options, visit https://groups.google.com/d/optout.

-- 
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/c45faac3-9dd5-42d9-9333-53821bc29ae0%40Spark.
For more options, visit https://groups.google.com/d/optout.

Reply via email to