Comment dois-je traiter les dépendances en ligne lors de l'exécution Rspec hors ligne?

StackOverflow https://stackoverflow.com/questions/4603161

  •  25-09-2019
  •  | 
  •  

Question

Je voudrais courir RSpec pour tester mon code à la fois quand je suis connecté à Internet et quand je ne suis pas.

Malheureusement, il y a quelques tests dans l'application qui dépendent d'avoir une connexion en direct - envoi d'emails, l'intégration Facebook, etc.

Y at-il un moyen plus pratique de créer un environnement de test en ligne / hors ligne ou est-ce une mauvaise pratique? A en juger par la façon dont peu que je peux trouver à ce sujet sur le web je devine ce dernier.

Était-ce utile?

La solution

Normalement, dans ce genre de situations que vous moquer des parties du code qui se connectent en dehors de votre application. Cela vous permet de tester contre les résultats attendus du service / système auquel vous vous connectez. Il est également plus rapide pour effectuer des tests.

Il y a un bref tutoriel sur moqueur avec rspec mais je suis sûr que vous pouvez trouver beaucoup vous.

Pour les tests que les courriels sont envoyés il y a d'autres approches si vous envoyez par ActionMailer. Il y a une section à ce sujet dans le guide de test .

EDIT (en réponse à des commentaires): Vous pouvez mettre une méthode TestHelper pour exécuter uniquement des tests lorsque vous êtes en ligne. Quelque chose comme:

def when_online
  if test_remote_connectivity
    yield
  else
    puts "Skipping test offline."
  end
end

Ensuite, vous pouvez l'appeler comme:

def test_facebook
  when_online do
    .....
  end
end

Je ne sais pas, je défends tout, mais il pourrait faire ce que vous voulez!

Autres conseils

Vous pouvez utiliser webmock dans les tests / spécifications que vous ne voulez pas se connecter à la ressource à distance.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top