8
からブロックをもたらす:RSpecのモック:モック/私はこのコードを持っているメソッド呼び出し
Net::SSH.start(@server, @username, :password => @password) do |ssh|
output = ssh.exec!(@command)
@logger.info 'SSH output: '
@logger.info output
end
を私がしたことを私に教えて、このようにRSpecののモックフレームワークを使用してSSH.Startを模擬することができますSSHセッションを開始しました:
Net::SSH.should_receive(:start).with("server", "user", :password => "secret") do
@started = true
end
これは、私がSSHセッションを開始したかどうかを教えてくれます。今私はssh.execをモックする必要があります!方法は簡単です:
Net::SSH.should_receive(:exec!).with("command")...
しかし、私はどのように降伏するかssh.execを含むブロックを呼び出しますか?私はSSH.startメソッドを嘲笑しているので、メソッド呼び出し?おそらく私はこのブロックを実行するために呼び出すことができるいくつかの簡単なメソッドがありますが、私はそれが何であるか分かりませんし、rspecの模擬フレームワークに関する本当に良い説明/ドキュメントを見つけることができません。
これについてshould_receiveについて知りませんでした。私のgoogle-fuは私に失敗しています... また、私は降伏したブロックの戻り値を気にしませんか?私はそれを実行したいので、ssh.execのshould_receiveを呼び出すことができます!方法。 –
これは 'should_receive'が意味することです。受信しなければ、テストは失敗します。 ドキュメントに関する限り、RSpecブックは優れています。私は、RSpecの使用を学ぶことと、一般的なBDDについて学ぶことの両方をお勧めします。 – Avdi
ああ、あなたは引数なしで '#and_yield()'を呼び出すことができるかもしれません。 – Avdi