Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Testing RxRealm with RxBlocking

Testing RxRealm with RxBlocking

Realm + RxSwift testing with RxBlocking

Marin Todorov

December 06, 2017
Tweet

More Decks by Marin Todorov

Other Decks in Programming

Transcript

  1. Testing RxRealm

    with RxBlocking
    RxSwift Berlin
    Marin Todorov

    View Slide

  2. RxRealm
    realm.io

    View Slide

  3. View Slide

  4. View Slide

  5. • Completely Asynchronous

    • Notifications will be bundled by Realm

    • Objects can change over time
    Testing Realm

    View Slide

  6. Test: collection emits when objects added
    [Message1]
    Realm.rx.add(...)
    Observer
    Observable>
    [Message1]

    View Slide

  7. RxTest

    View Slide

  8. RxTest

    View Slide

  9. RxTest

    View Slide

  10. Test: collection emits when objects added
    [Message1]
    Realm.rx.add(...)
    Observer
    Observable>
    [Message1]

    View Slide

  11. RxBlocking

    View Slide

  12. RxBlocking!

    View Slide

  13. Some Numbers
    RxRealm test suite with RxTest: 1570 loc
    RxRealm test suite with RxBlocking: 921 loc

    View Slide

  14. Test: observer handles error when observable errors out

    View Slide

  15. Test: collection emits when objects deleted

    View Slide

  16. Test: eventually changes from all threads will emit
    ... add objects on main queue, on background queque, sync on current queue, etc...

    View Slide

  17. View Slide

  18. Test: view model emits when speaker favorited

    View Slide

  19. Test: model emits when resultset changes
    ...
    ...

    View Slide

  20. • EventKit - github.com/realm/EventKit
    • RxRealm - github.com/RxSwiftCommunity/RxRealm

    RxBook - store.raywenderlich.com/products/rxswift
    Marin Todorov
    @icanzilb
    Updated!
    RxSwift 4

    View Slide