J'ai ce code:Rspec Mocks: simulation/rendement du bloc à partir d'un appel de méthode
Net::SSH.start(@server, @username, :password => @password) do |ssh|
output = ssh.exec!(@command)
@logger.info 'SSH output: '
@logger.info output
end
je peux se moquer de l'SSH.Start utilisant cadre de simulation du RSpec comme ça, pour me dire que je suis a commencé la session SSH:
Net::SSH.should_receive(:start).with("server", "user", :password => "secret") do
@started = true
end
cela me dit si j'ai @ lancé la session SSH. maintenant je dois me moquer du ssh.exec! méthode, qui est assez facile:
Net::SSH.should_receive(:exec!).with("command")...
mais comment puis-je céder/appeler le bloc qui contient le ssh.exec! appel de méthode, puisque je me suis moqué de la méthode SSH.start? Il y a probablement une méthode simple que je peux appeler pour exécuter ce bloc, mais je ne sais pas ce que c'est et je ne peux pas trouver de très bonnes explications/documentation sur le cadre moqueur de rspec.
ne savais pas que sur should_receive ... y at-il une bonne documentation sur ce genre de choses? mon google-fu me manque ... aussi - et si je ne me soucie pas de la valeur de retour du bloc cédé? Je veux juste qu'il soit exécuté, de sorte que je puisse appeler should_receive sur le ssh.exec! méthode. –
C'est ce que 'should_receive' signifie: s'il n'est pas reçu, le test échouera. En ce qui concerne la documentation, le RSpec Book est excellent. Je le recommande à la fois pour apprendre à utiliser RSpec, et pour en apprendre plus sur BDD en général. – Avdi
Oh, et vous pourrez peut-être appeler '#and_yield()' sans argument. – Avdi