15 votes

Kotlin Multiplatform : Comment faire des objets fantaisie dans un test unitaire pour iOS

Je travaille sur une bibliothèque Kotlin-multiplateforme (KMP) pour iOS / Android. J'ai écrit quelques tests unitaires pour JVM, pour lesquels j'utilise MockK pour créer des espions et des objets fantaisie, mais MockK ne supporte pas encore complètement le langage natif Kotlin.

Je me demandais donc comment les autres personnes travaillant sur des projets KMP écrivent des tests unitaires pour la plateforme iOS. Un exemple serait vraiment apprécié.

8voto

Steven Jeuris Points 4850

Actuellement, MockK ne supporte pas Kotlin/Native ou Kotlin/JS. Cependant, les deux sont placés comme des éléments importants sur l'arriéré de projets :

Il s'agit d'un défi de taille, étant donné qu'une bibliothèque de mocking s'appuie fortement sur des fonctionnalités du langage, telles que la réflexion, qui ne sont pas encore totalement prises en charge par Kotlin multiplateforme (et qui ne peuvent peut-être même pas l'être sans des contournements considérables pour des plateformes spécifiques).

Cela ne vous empêche pas d'écrire des classes fantaisie personnalisées et de vérifier les états que vous y avez définis, bien sûr, dont les tests pourront s'exécuter sur toutes les plateformes.

4voto

Abel Points 900

J'ai regardé autour de moi et j'ai demandé en Kotlin' General slack Il s'agit d'ailleurs d'un excellent espace où vous pouvez poser directement aux développeurs de Kotlin et aux enthousiastes des questions liées au langage Kotlin, y compris des questions relatives aux multi-plateformes.

Mais au moment où j'écris ces lignes, je ne pense pas que vous puissiez faire des simulations pour le module commun avec Mockk ou toute autre bibliothèque de simulations.

Ce que vous pouvez faire pour les tests dans le module commun qui est ciblé sur le natif comme l'une des plateformes est la bonne vieille approche interface/impl/stub.

1voto

Je teste les sources communes dans androidTest. Là, Mockk est disponible.

Je pense que c'est suffisant car Android utilise exactement le même code que le module commun.

shared
> src
>> androidMain 
>> androidTest < tests here
>> commonMain < code here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X