2010-05-26 3 views
7

Je suis en train de développer une application Rails, et je parlais juste avec mon collègue que nous avons un mélange d'appareils et de simulacres dans nos tests, que nous faisons en utilisant du concombre et Rspec. La question serait: quand chacun devrait-il être utilisé?Rails Fixtures vs Mocks

+1

hors sujet, mais une très belle alternative aux appareils est factory_girl (peut être utilisé côte à côte avec des appareils aussi) http://github.com/thoughtbot/factory_girl#readme et voici une présentation sur utilisation http://railscasts.com/episodes/158-factories-not-fixtures – house9

Répondre

14

Je voudrais utiliser un objet fantaisie lorsque l'utilisation de l'objet réel est impraticable/pas nécessaire. Disons par exemple que vous avez besoin d'appeler une API distante comme un localisateur d'adresses via le code postal. Vous voudrez probablement vous moquer de l'objet afin que les appels ne soient pas effectués à chaque fois que vous exécutez vos tests. Il y a aussi d'autres raisons, telles que l'amélioration de la vitesse, la demande de données qui changent là où vous avez besoin d'une réponse exacte ou peut-être que ça n'existe pas encore. Il vous permet de tester les choses isolément car vous pouvez déterminer que lorsque vous appelez ces méthodes sur cet objet fantôme, vous récupérerez et vous n'aurez pas besoin d'exécuter le code car ce test n'est pas important. Si vous utilisez des fixtures, vous aurez un vrai objet et les méthodes etc seront appelées et leur code sera exécuté, à moins bien sûr que vous ne supprimiez les méthodes, ce qui est quelque chose pour une autre question.

Espérons que cela aide un peu. Il y a un bon peepcode (http://peepcode.com/products/rspec-mocks-and-models) sur moqueur et talonnage, peut-être vérifier.

+0

merci. vous l'avez expliqué très clairement. – Anand