[rspec-users] Need help to figure out why this expectation isn't met.

Haim Ashkenazi haim.ashkenazi at gmail.com
Tue Oct 26 09:34:51 EDT 2010


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi Chris,

On Oct 26, 2010, at 11:15 AM, Chris Mear wrote:

> 
> 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
Wow, that was a stupid mistake. Thanks for the time, the good eye and the advice :)

I actually don't need to stub everything, I just had to fix the path to match the fixtures.

Thanks

Haim
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Darwin)

iEYEARECAAYFAkzG2PsACgkQhwMtGgRKzT1NsACeJ5MTWvcBCxqbPaHqGfy/QLuJ
+G4AoJD2hLjZ/eguqJFCOTs96dIQEa9W
=2UGK
-----END PGP SIGNATURE-----


More information about the rspec-users mailing list