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.
