Voglio eseguire è ruby sayhello.rb
sulla riga di comando, quindi ricevere Hello from Rspec
.Come verificare mette in rspec
c'ho che con questo:
class Hello
def speak
puts 'Hello from RSpec'
end
end
hi = Hello.new #brings my object into existence
hi.speak
Ora voglio scrivere un test in rspec per verificare che l'output della riga di comando è di fatto "Ciao da RSpec" e non "mi piace Unix "
NON FUNZIONANTE. Al momento ho questo nel mio file di sayhello_spec.rb
require_relative 'sayhello.rb' #points to file so I can 'see' it
describe "sayhello.rb" do
it "should say 'Hello from Rspec' when ran" do
STDOUT.should_receive(:puts).with('Hello from RSpec')
end
end
Inoltre, ho bisogno di vedere in realtà ciò che il test dovrebbe essere simile nella mia RSPEC favore.
Come rspec dovrebbe conoscere il codice in 'sayhello.rb'? – bswinnerton
RSpec non ha bisogno di conoscere (cioè accedere) il codice in 'sayhello.rb'. La specifica sta semplicemente ponendo un'aspettativa su 'STDOUT.puts', che è incorporato in Ruby. L'aspettativa è soddisfatta dopo che 'sayhello.rb' è caricato ed eseguito (ad esempio' require'd). –
Questa è la stessa aspettativa con la nuova sintassi di RSpec: 'expect (STDOUT) .per ricevere (: puts) .with (" Hello da RSpec ")' – Jankeesvw