On Fri, Aug 3, 2012 at 7:59 AM, paul h <[email protected]> wrote: > Hi, > > I have, what seems to be, a strange problem. I have googled, but can't > anything related to this, with any solutions. > > I am putting together a command suite, and need to test the output to > STDOUT. I have an output controller which other controllers utilize to > output the results of their operations, the output controller simply prints > the supplied message to STDOUT at the moment. > > I test for the output with: > > STDOUT.should_receive(:print).with(string_to_test_for) > > All of the controller tests so far pass fine with all of the output being > confirmed with the above matcher. > > I have just added a new controller, and now get the following error when the > actual output matches the expected output: > > Failure/Error: @controller.create(params) > NoMethodError: > undefined method `print' for #<IO:<STDOUT>> > > The stack trace refers back to the line in my output controller which prints > to STDOUT -> STDOUT.print msg > > However, when actual does not match expected I get the correct rspec > exception confirming the output that was not received: > > #<IO:0x007fb4b20716b0> received :print with unexpected arguments > expected: ("imported: ~/.application_data.po.con") > got: ("imported: ~/.application_data.po.conf") > > If I change the matcher to: > > STDOUT.should_receive(:print).at_least(:once) > > then the tests pass fine. > > Obviously, the print method does exist on STDOUT, but for some reason when > the matcher matches, it is resulting in this 'no print method error' for > STDOUT. > > Has anyone got any ideas why this is happening? > > (OSX, Ruby1.9.3p194, Rspec 2.10.0) > > Any pointers would be greatly appreciated while I will continue to > investigate myself. If I find the problem, I will post back here. If anyone > needs any more info in order to help, let me know, and I'll post it ASAP.
My guess is that something else in the process is trying to write to STDOUT before the mock framework restores its print method. -- You received this message because you are subscribed to the Google Groups "rspec" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
