Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Espec - Elixir bdd


Published on

In the Ruby world, a “test-unit” was the first testing library with simple DSL and set of “assertions”. As our applications became larger and more complex, we needed more powerful test frameworks. The concepts of testings also changed. Behaviour Driven Development approach shifted the testing focus from structure to behaviour. These new testing requirements brought RSpec into the Ruby world. The same happened to many other programming languages. Even though Elixir is a very young programming language, now is really the time for powerful BDD testing frameworks.

Published in: Engineering
  • Be the first to comment

Espec - Elixir bdd

  1. 1. ESpec |> Elixir BDD Anton Mishchuk #pivorak 10 March 25, 2016
  2. 2. About me - Ruby Developer at Matic Insurance Services Inc - Big fan of Elixir programming language since 2014 - ESpec package creator & maintainer - GitHub: antonmi - Email:
  3. 3. How the idea was born - We are from Ruby world - We like BDD - We like RSpec - It would be perfect to have RSpec like BDD testing framework in Elixir!
  4. 4. Is it possible to implement RSpec DSL in Elixir? - Chris McCord “Metaprogramming Elixir” - Macros to the rescue - Yes! It is possible! - ESpec v0.1.0 was released on March 25, 2015 - Current ESpec version is 0.8.16 - package: espec - GitHub: antonmi/espec
  5. 5. Do you think this is RSpec code?
  6. 6. ESpec - BDD for Elixir - Test organization with “describe”, “context”, “it”, and etc. blocks - Familiar matchers “eq”, “be_close_to”, “raise_exception”, etc - Custom matchers - Three types of expectation syntax - “Before” and “finally” blocks - “let”, “let!” and “subject” - Shared examples - Mocking with Erlang “meck” library. - Async examples - Doc specs - HTML and JSON formatted outputs
  7. 7. ESpec Phoenix - ESpec configs, helpers and matchers to use it with Phoenix web framework - Is on early stage of development. Current version is 0.2.0 - Contributors are welcomed - package: espec_phoenix - Github: antonmi/espec_phoenix
  8. 8. Thanks for your attention