$30 off During Our Annual Pro Sale. View Details »

def tdd_ios( hint: RubyMotion ) @ #SydInMotion

def tdd_ios( hint: RubyMotion ) @ #SydInMotion

Brief testing lightning talk from April 2014's #sydinmotion.

Jon Rowe

April 15, 2014
Tweet

More Decks by Jon Rowe

Other Decks in Technology

Transcript

  1. def tdd_ios(
    hint: RubyMotion)
    @JONROWE

    View Slide

  2. @JONROWE

    View Slide

  3. @JONROWE
    So don’t?

    View Slide

  4. ObjectiveC

    View Slide

  5. ObjectiveC
    TDD IS HARD!

    View Slide

  6. ObjectiveC
    TDD IS HARD!
    (or just not popular)

    View Slide

  7. PhoneGap?

    View Slide

  8. PhoneGap?
    JS

    View Slide

  9. PhoneGap?
    JS
    TDD’able

    View Slide

  10. PhoneGap?
    JS
    TDD’able
    Sucks...

    View Slide

  11. RubyMotion?

    View Slide

  12. RubyMotion?
    Ruby

    View Slide

  13. RubyMotion?
    Ruby
    Compiles

    View Slide

  14. RubyMotion?
    Ruby
    Compiles
    Access to all the APIs

    View Slide

  15. RubyMotion?
    Ruby
    Compiles
    Access to all the APIs

    View Slide

  16. RubyMotion?
    Ruby
    Compiles
    Access to all the APIs

    View Slide

  17. Has testing built in

    View Slide

  18. Bacon
    !

    View Slide

  19. Bacon
    MacBacon

    View Slide

  20. Bacon
    MacBacon
    Runs In Simulator

    View Slide

  21. View Slide

  22. Unit Testing

    View Slide

  23. Unit Testing
    Integration Testing

    View Slide

  24. Unit Testing
    Integration Testing
    Acceptance Testing
    (limited)

    View Slide

  25. Use Rubyisms

    View Slide

  26. Use Rubyisms
    Stub web requests

    View Slide

  27. Use Rubyisms
    Stub web requests
    Simulate device
    events

    View Slide

  28. Felt Like Rails

    View Slide

  29. Solution?

    View Slide

  30. Pure Ruby Library

    View Slide

  31. Pure Ruby Library
    RSpec / MiniTest

    View Slide

  32. Pure Ruby Library
    RSpec / MiniTest
    Ruby 2.0.0

    View Slide

  33. Caveats:

    View Slide

  34. Caveats:
    Libs don’t always
    behave the same.

    View Slide

  35. Caveats:
    Libs don’t always
    behave the same.
    (JSON)

    View Slide

  36. Caveats:

    View Slide

  37. Caveats:
    no require

    View Slide

  38. Caveats:
    no require
    no metaprogramming

    View Slide

  39. Caveats:
    no require
    no metaprogramming
    alloc / init vs initialize

    View Slide

  40. end

    View Slide

  41. Bonus Code

    View Slide

  42. View Slide

  43. View Slide

  44. See Also:
    https://github.com/JonRowe/locomotion

    View Slide