Mam ten kod:rspec Mocks: makiety/wydajność bloku z wywołania metody
Net::SSH.start(@server, @username, :password => @password) do |ssh|
output = ssh.exec!(@command)
@logger.info 'SSH output: '
@logger.info output
end
mogę mock SSH.Start użyciu mock ramy rspec Like to powiedzieć, że mam rozpocząłem sesję SSH:
Net::SSH.should_receive(:start).with("server", "user", :password => "secret") do
@started = true
end
mówi mi to, czy uruchomiłem sesję ssh, czy nie. teraz muszę wyśmiać ssh.exec! Metoda, która jest dość prosta:
Net::SSH.should_receive(:exec!).with("command")...
ale jak zrobić Poddaję/wywołać blok zawierający ssh.exec! wywołanie metody, ponieważ wyśmiałem metodę SSH.start? jest prawdopodobnie jakaś prosta metoda, którą mogę wywołać, aby wykonać ten blok, ale nie wiem co to jest i nie mogę znaleźć żadnych naprawdę dobrych objaśnień/dokumentacji na szyderczym schemacie rspec.
nie wiedziałem o tym, że powinienem ... dostrzec dobrą dokumentację na ten temat? mój google-fu mnie zawodzi ... także - a co jeśli nie dbam o wartość zwracaną bloku? Po prostu chcę, żeby został wykonany, dzięki czemu mogę wywołać should_receive na ssh.exec! metoda. –
To właśnie oznacza "should_receive": jeśli nie zostanie odebrane, test się nie powiedzie. Jeśli chodzi o dokumentację, RSpec Book jest doskonały. Polecam go zarówno do nauki korzystania z RSpec, jak i do nauki na temat BDD w ogóle. – Avdi
Aha, i możesz być w stanie wywołać '#and_yield()' bez argumentów. – Avdi