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 <haim.ashken...@gmail.com> 
>> 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
>> rspec-users@rubyforge.org
>> 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
>> rspec-users@rubyforge.org
>> http://rubyforge.org/mailman/listinfo/rspec-users
> 
> _______________________________________________
> rspec-users mailing list
> rspec-users@rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users

_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to