On 25 Oct 2010, at 09:54, Haim Ashkenazi wrote: > On Oct 25, 2010, at 9:09 AM, Haim Ashkenazi wrote: > >> Hi >> >> This is my first ruby script, so sorry if it's trivial :) >> >> I have a should_receive expectation on :new which should work (and works on >> a simple test I wrote) but it doesn't work in my case and I can't figure out >> why. The source is on github (commit: >> 5197b763f391d6d358ca7bc5838375c9247271d8). The spec that doesn't work is in >> spec/runsshlib/cli_spec.rb line 127 (currently commented out). >> >> Can someone pls help me figure out why the expectation doesn't work? >> >> Thanks in advance >> >> Haim > > Hi > > I'm not sure if the URLs in the original post can be viewed :( so here they > are: > > • The repository is here: http://github.com/babysnakes/runssh > • The spec with the problem is > http://github.com/babysnakes/runssh/blob/5197b763f391d6d358ca7bc5838375c9247271d8/spec/runsshlib/cli_spec.rb > (line 127). > > Thanks > > Haim >
(Moved your reply inline.) The rescuing that you do in line 56 of CLI#run was obscuring the real error here: 1) The CLI interface when run with subcommand shell should correctly initialize SshBackend Failure/Error: cli.run host definition (cust2 => dc => somehost) doesn't exist! # ./lib/runsshlib/config_file.rb:101:in `get_host' # ./lib/runsshlib/cli.rb:228:in `run_shell' # ./lib/runsshlib/cli.rb:54:in `call' # ./lib/runsshlib/cli.rb:54:in `run' # ./spec/runsshlib/cli_spec.rb:133 I found this by commenting out the lines where you rescue the exception and raise a Trollop error instead. So the example wasn't even reaching the line in CLI#run_shell where you create the SshBackend, because it was failing on the get_host call (since the example uses dummy data). I got the example to pass by also mocking/stubbing the ConfigFile stored in @c, and stubbing its get_host method: http://github.com/chrismear/runssh/commit/87ca98a1429b975e00b87ffadbb0b4c81d849af8 If you want to mock everything outside of the CLI object in this spec, that's one (not hugely elegant) way to do it. When you have problems like this, it's helpful to dig down and find the exact place the error is occurring. Chris _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users