Comment MVVM et Clean Archi peuvent cadrer l’approche BDD

Benjamin Seillier
2 min readJul 3, 2018

--

Voici un exemple simple pour illustrer comment le MVVM et la Clean Archi peuvent faciliter et cadrer la mise en place de l’approche BDD (Behavior-Driven Development).

Les sources de l’exemple sont disponibles sur Github :

Pour commencer, nous partons toujours du besoin avec un exemple illustrant une règle simple, ici une addition.

Pour parser et exécuter cet exemple nous utilisons le framework Cucmberish.

Notre test est bien en erreur, le point de départ dans l’approche BDD.

Pour initier le développement de notre ViewModel, nous identifions sur notre exemple nos entrées et nos sorties : 2 entrées (field1 et field2) et une sortie (result).

Nos ViewModels répondront toujours à la même logique, le protocole “ViewModelType” qui par sa structure permet de séparer clairement nos entrées et nos sorties. La méthode “Transform” étant chargée de fournir les sorties attendues en fonction des entrées données.

Nous nous inspirons ici des concepts Clean Architecture RxSwift de Sergdort (https://github.com/sergdort/CleanArchitectureRxSwift)

Appliqués à notre exemple, avec les entrées et les sorties identifiées, notre ViewModel a finalement cette structure.

De manière pragmatique, nous développons le minimum pour faire passer notre test.

Evidement nous sommes loin de l’addition. Mais nous répondons à notre exemple. Le job est fait.

Pour aller plus loin, nous avons besoin d’un second exemple :

Nous écrivons notre code pour faire passer ce second exemple.

Notre ViewModel est terminé, il nous reste à le binder à un ViewController.

Notre application est maintenant fonctionnelle et testée.

Par cet exemple simpliste, nous avons essayé de montrer comment les concepts MVVM / Clean Archi / RxSwift peuvent faire plus que s’intégrer parfaitement dans une démarche BDD: ils sont même didactiques.

En structurant la méthodologie, en forçant à penser entrées, transformation et sorties, les étapes sont plus clairement identifiables. Il n’y a donc plus toutes ces interrogations : où dois-je placer mes tests, quelles sont les couches que je dois traverser …

Enjoy ! ;-)

--

--