1 votes

Comprendre les tests unitaires de Rails : S'agit-il toujours d'un test unitaire si un seul test teste les interdépendances des modèles ?

Outre le fait que Rails incorpore la couche base de données dans les tests unitaires (ce qui n'est donc pas strictement un test unitaire), que se passe-t-il si je teste les interdépendances entre les modèles, par exemple, vérifier si has_many / belongs_to con :dependent => :destroy détruit vraiment les objets associés ou les objets des modèles de jonction pour ne pas laisser d'orphelins autour ?

Un tel test devrait-il être placé dans les tests de fonction ou d'intégration ?

Ou demandé d'une autre manière : Existe-t-il un guide avec des exemples indiquant quel type de test doit aller où et pourquoi ? Je n'ai rien trouvé de vraiment utile.

1voto

Nicholas C Points 700

En règle générale, les modèles sont testés à l'unité, les contrôleurs sont testés fonctionnellement et les tests d'intégration sont effectués avec les vues. Si vous utilisez RSpec, vous aurez des spécifications de modèles, de contrôleurs et de vues, mais vous testerez essentiellement les mêmes choses.

Vous pouvez toujours simuler des actions (avec des joyaux comme Mocha ou Flexmock) pour éviter que les appels aux méthodes ne fassent réellement quelque chose - mais vous voulez être sûr que le comportement attendu se produit. (Par exemple, un appel est fait à MyClass.create ou MyClass.destroy). C'est particulièrement vrai pour les tests de contrôleurs et de vues, où il m'arrive souvent de simuler un appel à un modèle.

D'après mon expérience, je n'ai généralement pas de problèmes avec les modèles et les associations utilisant la base de données. Vous pourriez vous intéresser à Factory Girl ou à une alternative aux fixtures, qui facilitent la gestion des objets/données de test.

0voto

Mendelt Points 21583

Une unité dans un test unitaire n'est pas toujours une classe ou un objet unique. Tester les interdépendances ne devrait pas être un problème. Je n'ai pas trouvé de règles strictes pour définir les unités dans les tests unitaires mais j'utilise souvent les idées de la conception pilotée par le domaine pour me guider. Les tests qui testent le comportement d'un seul agrégat sont généralement assez faciles à maintenir en tant que tests unitaires. Les tests qui dépendent de plus d'agrégats ou même d'agrégats et de services ensemble sont des tests d'intégration.

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