On Oct 25, 2010, at 3:20 AM, Haim Ashkenazi wrote:
> Hi Zach,
>
> On Oct 24, 2010, at 11:04 PM, Zach Dennis wrote:
>
>>
>>
>> On Sun, Oct 24, 2010 at 11:21 AM, Haim Ashkenazi <[email protected]>
>> wrote:
>> Hi
>>
>> I wonder why this stub doesn't work:
>>
>> # ruby 1.8.7, rspec 2.0.1
>> require 'rubygems'
>> require 'rspec'
>>
>> Rspec.configure do |c|
>>
>> c.mock_with :rspec
>> end
>>
>> class SayHello
>> def say_hello
>> "hello"
>> end
>> end
>>
>> describe "test string" do
>> it "should interpret stub correctly" do
>> SayHello.stub!(:say_hello).and_return('NO')
>>
>> sh = SayHello.new()
>> sh.say_hello.should eql('NO')
>> end
>> end
>> In your example you are stubbing a class method. In your implementation you
>> have defined an instance method. To have this work for your given
>> implementation you need to know about the instance you are working with, ie:
>>
>> it "should interpret stub correctly" do
>> sh = SayHello.new()
>> sh.stub!(:say_hello).and_return 'NO'
>> sh.say_hello.should eql('NO')
>> end
>>
>> Hope this helps,
>
> Thanks for your help. I've found in the archives that you have to use mocha
> to do these kind of things.
This is incorrect. You are free to use mocha, but rspec-mocks, RR, and flexmock
are all perfectly capable of stubbing class methods, so you don't _have_ to use
mocha.
> I tried a different approach (to mock the initializer) but although this
> works on a simple setup, it didn't work for me on my real classes.
What Zach suggested is the correct approach. What problem are you seeing when
you try it?
> I'm probably doing something wrong so I'll upload it to github and ask this
> list again for help.
>
> Thanks.
>
> Bye
>
>>
>> Zach
>>
>>
>>
>> The result is:
>> tryouts ➤ rspec -f n test_spec.rb
>>
>>
>> test string
>> should interpret stub correctly (FAILED - 1)
>>
>> Failures:
>> 1) test string should interpret stub correctly
>> Failure/Error: sh.say_hello.should eql('NO')
>>
>> expected "NO"
>> got "hello"
>>
>> (compared using eql?)
>> # ./test_spec.rb:18
>>
>> Finished in 0.0016 seconds
>> 1 example, 1 failure
>> Any ideas?
>> Bye
>> Haim Ashkenazi
>>
>>
>>
>> _______________________________________________
>> rspec-users mailing list
>> [email protected]
>> http://rubyforge.org/mailman/listinfo/rspec-users
>>
>>
>>
>> --
>> Zach Dennis
>> http://www.continuousthinking.com (personal)
>> http://www.mutuallyhuman.com (hire me)
>> http://ideafoundry.info/behavior-driven-development (first rate BDD training)
>> @zachdennis (twitter)
>> _______________________________________________
>> rspec-users mailing list
>> [email protected]
>> http://rubyforge.org/mailman/listinfo/rspec-users
>
> _______________________________________________
> rspec-users mailing list
> [email protected]
> http://rubyforge.org/mailman/listinfo/rspec-users
_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users