[RUBY] Testez Nokogiri avec Rspec.

L'argument passé à Nokogiri est moqué et testé, alors laissez-le.

FUGA_FUGA = ['Compagnie', 'secret']
def hogegiri_method(fuga)
  HOGE_COUNT = 5
  HOGE_COUNT.times do |time|
    html = Nokogiri::HTML(OpenURI.open_uri(url))
    a, b, c =Expression régulière duveteuse
    break if FUGAFUGA.include?(a)
  end
  { a: a, b: b, c: c }
end

C'est un code qui ressemble à de la merde parce que c'est un code qui ne peut pas être affiché de différentes manières, mais cette fois, je veux créer une fausse valeur de retour comme une simulation.

html = Nokogiri::HTML(OpenURI.open_uri('secret'))

ici

Cependant, il est difficile de définir la valeur de retour de Nokogiri directement avec and_return.

Tel

En d'autres termes, vous devez laisser nokogiri faire le travail, mais n'accédez pas à l'URL et obtenez les données souhaitées.

Alors que faire

OpenUri.open_uri

Mock la valeur de retour de ce gars et passer la valeur à passer à l'argument de Nokogiri.

Il semble que le HTML que vous souhaitez analyser soit inclus dans l'argument de Nokogiri. Ensuite, dans l'environnement de production, vous pouvez copier le code HTML de l'URL à accéder et à récupérer, créer un fichier html, le coller là-bas et l'utiliser comme simulation de la valeur de retour! !! Je n'ai pas écrit d'article sur la facilité avec laquelle c'était.

Réponse finale

spec/test.html


Copie HTML
allow(OpenURI).to receive(:open_uri).and_return(File.new("#{Rails.root}/spec/test.html"))

Achevée Maintenant, la méthode fonctionne comme si vous accédiez à l'url et la récupériez. De plus, si vous faites l'argument de ʻand_return comme nil, File.new ("# {Rails.root} /spec/test.html") `et que vous ne pouvez pas obtenir la valeur car la logique de la méthode créée cette fois-ci, c'est jusqu'à 5 Puisqu'il boucle des temps, vous pouvez également confirmer qu'il est en boucle.

Depuis que j'ai commencé le stage, je fais des choses que je ne ferais jamais dans le développement personnel, donc je vais rester coincé à chaque fois

Peut avoir grandi un peu

Recommended Posts

Testez Nokogiri avec Rspec.
[Rails] Test avec RSpec
Tester Active Strage avec RSpec
Tester le résolveur GraphQL avec rspec
Copier et coller le test avec RSpec
[rails] Faisons un test unitaire avec Rspec!
[Ruby on Rails] Afficher le test avec RSpec
[Ruby on Rails] Test de modèle avec RSpec
Exécution du code de test RSpec
Test d'intégration avec Gradle
[Pour les débutants] Testez l'enregistrement des utilisateurs avec RSpec
Utiliser Webmock avec Rspec
Tester automatiquement avec la jauge
Test de charge avec JMeter
Faites un test unitaire avec Junit.
Tester l'API Web avec junit
Vérifiez la valeur CSV avec RSpec
[Rails] Code de test à l'aide de Rspec
[Rails] À propos du test de réponse Rspec
Comment effacer l'image de test après avoir exécuté le test Rspec à l'aide de CarrierWave
Téléchargement d'images à l'aide de CarrierWave ~ Test Rspec ~
tester
Test de l'API REST à l'aide de REST Assured Part 2
tester
Couverture de test de sortie avec Clover + Gradle
[Rails5] Rspec -Test d'unité lors de l'imbrication-
tester
À propos du test d'application RSpec (test unitaire)
tester
[Java] Tester des méthodes privées avec JUnit
Tester les relations d'inclusion de liste avec AssertJ
Contrôleur de cadre de test Spring avec Junit
[RSpec] Test unitaire (avec gem: factory_bot)
MASCHINE teste la régression linéaire avec plusieurs variables
Introduire RSpec et écrire le code de test unitaire
Test Java EE (CDI / intercepteur) avec Arquillian
[Note] Comment démarrer avec Rspec
Effectuer un test de confirmation de transaction avec Spring Boot
Comment tester l'étendue privée avec JUnit
Le test JUnit 5 Gradle génère une erreur avec l'annotation Lombok
Présentation du test Java automatisé avec JUnit 5 + Gradle
Test de validation de classe de formulaire avec Spring Boot
[Rails] Je veux tester avec RSpec. Nous soutenons votre démarche [Procédure d'introduction]