Stubbed method not being returned to its original state at the end of a test
Reported by James Mead | October 26th, 2009 @ 03:54 PM
Reported on behalf of Gareth Reeves :-
Running the following code gives a single expectation error in TestB#setup :-
unexpected invocation: B.new()
It's like the stub expectation on B in TestA doesn't get removed when other tests run. While A (the superclass) gets cleaned up.
require 'rubygems'
require 'test/unit'
require 'mocha'
class A
def value; 'a'; end
end
class B < A; end
class TestA < Test::Unit::TestCase
def setup
A.stubs( :new ).returns( 'this is a' )
B.stubs( :new ).returns( 'this is b' )
@a = A.new
@b = B.new
end
def test_value
assert_equal 'this is a', @a
assert_equal 'this is b', @b
end
end
class TestB < Test::Unit::TestCase
def setup
@b = B.new
end
def test_value
assert_equal 'a', @b.value
end
end
class TestAgain < Test::Unit::TestCase
def setup
@a = A.new
end
def test_value
assert_equal 'a', @a.value
end
end
Comments and changes to this ticket
-
James Mead October 26th, 2009 @ 03:56 PM
- State changed from new to open
I wonder whether it's significant that it's the
new
method that is being stubbed. -
James Mead October 26th, 2009 @ 04:00 PM
It doesn't appear to be significant that it's the
new
method that is being stubbed. The following test fails with a similar error :-unexpected invocation: B.wibble()
require 'rubygems' require 'test/unit' require 'mocha' class A def self.wibble; new; end def value; 'a'; end end class B < A; end class TestA < Test::Unit::TestCase def setup A.stubs( :wibble ).returns( 'this is a' ) B.stubs( :wibble ).returns( 'this is b' ) @a = A.wibble @b = B.wibble end def test_value assert_equal 'this is a', @a assert_equal 'this is b', @b end end class TestB < Test::Unit::TestCase def setup @b = B.wibble end def test_value assert_equal 'a', @b.value end end class TestAgain < Test::Unit::TestCase def setup @a = A.wibble end def test_value assert_equal 'a', @a.value end end
Please Sign in or create a free account to add a new ticket.
With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.
Create your profile
Help contribute to this project by taking a few moments to create your personal profile. Create your profile ยป
A mocking & stubbing library for Ruby.
* <a href="http://github.com/floehopper/mocha">GitHub repository</a>
* <a href="http://mocha.rubyforge.org">Documentation</a>
* <a href="http://groups.google.com/group/mocha-developer">Mailing List</a>