Ich habe mich über das an Nokogiri übergebene Argument lustig gemacht und es getestet, also lass es.
FUGA_FUGA = ['Unternehmen', 'Geheimnis']
def hogegiri_method(fuga)
HOGE_COUNT = 5
HOGE_COUNT.times do |time|
html = Nokogiri::HTML(OpenURI.open_uri(url))
a, b, c =Regulärer Ausdruck flauschig
break if FUGAFUGA.include?(a)
end
{ a: a, b: b, c: c }
end
Es ist ein scheißartiger Code, weil es ein Code ist, der nicht auf verschiedene Arten angezeigt werden kann, aber dieses Mal möchte ich einen falschen Rückgabewert als Mock erstellen.
html = Nokogiri::HTML(OpenURI.open_uri('Geheimnis'))
Hier
Es ist jedoch schwierig, den Rückgabewert von Nokogiri direkt mit and_return festzulegen.
Eine solche
Mit anderen Worten, Sie müssen nokogiri die Arbeit machen lassen, aber nicht auf die URL zugreifen und die gewünschten Daten erhalten.
Was ist dann zu tun
OpenUri.open_uri
Verspotten Sie den Rückgabewert dieses Typen und übergeben Sie den Wert, der an das Argument von Nokogiri übergeben werden soll.
Es scheint, dass der HTML-Code, den Sie analysieren möchten, im Argument von Nokogiri enthalten ist. In der Produktionsumgebung können Sie dann den HTML-Code der URL kopieren, auf die zugegriffen und abgerufen werden soll, eine HTML-Datei erstellen, dort einfügen und den Rückgabewert nachahmen! !! Ich habe keinen Artikel darüber geschrieben, wie einfach es war.
Endgültige Antwort
spec/test.html
HTML-Kopie
allow(OpenURI).to receive(:open_uri).and_return(File.new("#{Rails.root}/spec/test.html"))
Komplett
Jetzt funktioniert die Methode so, als würden Sie auf die URL zugreifen und sie abrufen.
Wenn Sie das Argument von and_return
wie nil, File.new (" # {Rails.root} /spec/test.html ")
ausführen, können Sie den Wert als Logik der diesmal erstellten Methode nicht erhalten, bis zu 5 Da es sich um Schleifen handelt, können Sie auch bestätigen, dass es sich um eine Schleife handelt.
Seit ich mit dem Praktikum angefangen habe, mache ich Dinge, die ich in meiner persönlichen Entwicklung niemals tun würde, also werde ich jedes Mal stecken bleiben, aber ich versuche irgendwie unterrichtet und klebrig zu werden
Kann ein wenig gewachsen sein
Recommended Posts