2016-05-27 4 views
1

Hi Ich habe versucht, das funktioniert zu bekommen, ich habe einen Controller, der Sunspot verwendet, um auf einem Modell zu suchen, ich hatte eine einfache SQL-Anweisung mit Likes und auf meinem Test wurde erwartet, eine Reihe von Objekt zu bekommen. Nun, da ich mit der Implementierung von Sunspot begonnen habe, bin ich mir nicht sicher, wie ich einen einfachen Test durchführen kann. Ich möchte grundsätzlich feststellen, dass, wenn dieser Controller die Suchmethode verwendet, ein Array von Objekten zurückgegeben werden soll.Sunspot und RSpec wie stub?

Haben Sie Rspec + Sunspot? Irgendwelche guten Ratschläge, denen ich folgen kann, vielleicht verwende ich es nicht richtig,

PS. Ich habe https://github.com/sunspot/sunspot/wiki/RSpec-and-Sunspot gelesen und es ist ziemlich kurz auf thef Handlung, die ich ::Sunspot::Rails::StubSessionProxy.new(::Sunspot.session) Klasse an der Sunspot::Session

Antwort

1

konnte ich mein Problem umgehen, indem sie die Prüfung des Quellcodes von sunspot enger verwenden müssen scheint, dass die StubSessionProxy a dumme Implementierung mit der meisten Code-Leer-Methode. Zuerst werde mir klar, dass ich nicht versuchen, die search Methode in dieser Klasse Stummel, sondern die new_search Mehtod den Anruf stattdessen ist, und zweitens, da sowohl die Umsetzung eine Instanz von Suchmodul kehren die Wanne war wirklich, wie dies

allow_any_instance_of(Sunspot::Rails::StubSessionProxy::Search).to receive(:results).and_return(myExpectedResults)

Lesen Sie mehr https://github.com/sunspot/sunspot/blob/964ecd0ed0a0c949f399d93cba42021c92cf6062/sunspot_rails/lib/sunspot/rails/stub_session_proxy.rb

1

Sunspot.session = Sunspot::Rails::StubSessionProxy.new(Sunspot.session)

für die meisten Fälle ausreichend ist, aber wenn Sie mehr als allow_any_instance_of(Sunspot::Rails::StubSessionProxy::Search).to receive(:results).and_return(myExpectedResults) wollen, können dieses Juwel hilfreich sein https://rubygems.org/gems/stub_solr