2010-06-29 5 views
0

Je suis nouveau à TDD, et j'essaie d'apprendre la bonne façon de faire les choses. Je dois donc créer une classe javascript pour une extension de navigateur Web qui stocke les informations de l'utilisateur au format HTML5 localStorage (j'appellerai cette classe UserInfoStorage). Cependant, je veux rendre mon extension compatible avec tous les navigateurs, et la façon d'interagir avec localStorage est différente entre les navigateurs (Chrome, Firefox, Safari).Quelle est la bonne façon de faire cela en utilisant les principes TDD?

Dois-je faire une autre classe appelée Storage qui est spécifique pour chaque navigateur et avoir UserInfoStorage Utilisez cette option pour des trucs magasin pour localStorage? Comment est-ce que je pourrais tester ceci sans lier le test pour UserInfoStorage à l'implémentation de Storage?

Merci!

Répondre

0

j'ai réalisé que la meilleure façon de le faire serait de créer un test Storage qui a une fonctionnalité get et set de base (un peu comme une base de données de test), et ont UserInfoStorage Utilisez cette option pour stocker et récupérer des données. Cela permet de tester l'interface de UserInfoStorage directement, sans le lier à l'implémentation de Storage, donc si je change la façon dont UserInfoStorage fonctionne, les tests seront toujours valides (puisqu'ils ne testent pas si UserInfoStorage interagit correctement avec Storage, mais plutôt que les fonctions de UserInfoStorage produisent les résultats souhaités).

2

En termes généraux, vous utiliseriez Storage sous test pour vous assurer que le UserInfoStorage interagit correctement avec le stockage. Ceux-ci comprendraient (partie de) vos tests unitaires sur UserInfoStorage. Ensuite, vous aurez des tests unitaires distincts pour chacune des implémentations de stockage par navigateur, et idéalement aussi des tests sur le code qui détermine l'implémentation de stockage à fournir en fonction du navigateur impliqué.

Questions connexes