2009-12-11 11 views
7

Quindi sto cercando di capire un modo di stubare un metodo di controllo in rspec per un'app Sinatra. La ragione principale di ciò è testare il flusso logico dell'applicazione e assicurarsi che chiami le funzioni necessarie quando vengono soddisfatte determinate condizioni. Quindi, in sostanza, voglio essere in grado di fare qualcosa di simileStubing un metodo di controllo con Sinatra e rspec

controller.should_receive(:fancy_method).and_return("This is a string") 

Quello che sto avendo difficoltà a fare sta accedendo l'istanza di controllo all'interno della app Sinatra. Sono in grado di scavalcare le funzioni attuali usando un class_eval sulla classe del controller sinatra, ma mi piacerebbe affermare che queste funzioni sono effettivamente eseguite.

Qualcuno ha qualche consiglio?

Grazie.

risposta

3

Dan, credo che quello che vuoi sia solo testare le azioni del controller. Dal punto di vista del tester non ci si dovrebbe preoccupare di ciò che viene effettivamente chiamato, ma piuttosto dell'output, dato un input specifico e forse alcune altre condizioni speciali (che sono il mocking o lo stub delle altre classi) (1).

È possibile controllare il official documentation for Sinatra + Rack::Test o this blog post from devver.net.

(1): Se le pagine del controller chiamano altre classi (modelli, servizi, ecc.), Si potrebbero prendere in giro queste e mettere le aspettative su di esse. Per esempio:

SomeClass.should_receive(:msg).with(:arg).and_return(:special_value) 

qualche info in più per scherno (con RSpec in questo exmaple) si possono trovare sul RSpec documentation pages.

Problemi correlati