mocha 0.9.12 → 0.10.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +3 -0
- data/Gemfile.minitest.1.3.0 +7 -0
- data/Gemfile.minitest.1.4.0 +7 -0
- data/Gemfile.minitest.1.4.1 +7 -0
- data/Gemfile.minitest.1.4.2 +7 -0
- data/Gemfile.minitest.2.0.0 +7 -0
- data/Gemfile.minitest.2.0.1 +7 -0
- data/Gemfile.minitest.2.3.0 +7 -0
- data/Gemfile.minitest.latest +7 -0
- data/Gemfile.test-unit.2.0.0 +8 -0
- data/Gemfile.test-unit.2.0.1 +7 -0
- data/Gemfile.test-unit.2.0.3 +7 -0
- data/Gemfile.test-unit.latest +7 -0
- data/README.rdoc +4 -0
- data/RELEASE.rdoc +22 -3
- data/Rakefile +17 -90
- data/init.rb +3 -0
- data/lib/mocha.rb +1 -1
- data/lib/mocha/central.rb +4 -4
- data/lib/mocha/class_method.rb +20 -20
- data/lib/mocha/expectation.rb +33 -6
- data/lib/mocha/instance_method.rb +17 -1
- data/lib/mocha/integration/mini_test.rb +17 -13
- data/lib/mocha/integration/mini_test/{version_201_to_202.rb → version_201_to_222.rb} +9 -9
- data/lib/mocha/integration/mini_test/version_230_to_251.rb +59 -0
- data/lib/mocha/integration/test_unit.rb +17 -13
- data/lib/mocha/integration/test_unit/{gem_version_203_to_209.rb → gem_version_203_to_220.rb} +8 -8
- data/lib/mocha/integration/test_unit/gem_version_230_to_233.rb +58 -0
- data/lib/mocha/mock.rb +14 -14
- data/lib/mocha/object.rb +1 -1
- data/lib/mocha/thrower.rb +15 -0
- data/lib/mocha/version.rb +3 -0
- data/mocha.gemspec +43 -0
- data/test/acceptance/acceptance_test_helper.rb +3 -0
- data/test/acceptance/expectations_on_multiple_methods_test.rb +55 -0
- data/test/acceptance/minitest_test.rb +12 -7
- data/test/acceptance/raise_exception_test.rb +39 -0
- data/test/acceptance/{stub_class_method_test.rb → stub_class_method_defined_on_active_record_association_proxy_test.rb} +3 -103
- data/test/acceptance/stub_class_method_defined_on_class_test.rb +72 -0
- data/test/acceptance/stub_class_method_defined_on_module_test.rb +75 -0
- data/test/acceptance/stub_class_method_defined_on_superclass_test.rb +75 -0
- data/test/acceptance/stub_instance_method_defined_on_active_record_association_proxy_test.rb +93 -0
- data/test/acceptance/stub_instance_method_defined_on_class_and_aliased_test.rb +69 -0
- data/test/acceptance/stub_instance_method_defined_on_class_test.rb +66 -0
- data/test/acceptance/stub_instance_method_defined_on_kernel_module_test.rb +75 -0
- data/test/acceptance/stub_instance_method_defined_on_module_test.rb +75 -0
- data/test/acceptance/stub_instance_method_defined_on_object_class_test.rb +75 -0
- data/test/acceptance/stub_instance_method_defined_on_singleton_class_test.rb +70 -0
- data/test/acceptance/stub_instance_method_defined_on_superclass_test.rb +72 -0
- data/test/acceptance/throw_test.rb +45 -0
- data/test/method_definer.rb +3 -3
- data/test/test_helper.rb +0 -6
- data/test/unit/central_test.rb +7 -3
- data/test/unit/class_method_test.rb +10 -10
- data/test/unit/mockery_test.rb +1 -0
- data/test/unit/thrower_test.rb +20 -0
- metadata +110 -33
- data/lib/mocha/metaclass.rb +0 -13
- data/test/acceptance/stub_instance_method_test.rb +0 -206
- data/test/unit/metaclass_test.rb +0 -22
data/mocha.gemspec
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
lib = File.expand_path('../lib/', __FILE__)
|
3
|
+
$LOAD_PATH.unshift lib unless $LOAD_PATH.include?(lib)
|
4
|
+
require "mocha/version"
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = "mocha"
|
8
|
+
s.version = Mocha::VERSION
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["James Mead"]
|
12
|
+
s.description = "Mocking and stubbing library with JMock/SchMock syntax, which allows mocking and stubbing of methods on real (non-mock) classes."
|
13
|
+
s.email = "mocha-developer@googlegroups.com"
|
14
|
+
s.extra_rdoc_files = ["README.rdoc", "COPYING.rdoc"]
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n") - ["TODO", ".travis.yml", ".gitignore"]
|
17
|
+
|
18
|
+
s.homepage = "http://mocha.rubyforge.org"
|
19
|
+
s.rdoc_options = ["--title", "Mocha", "--main", "README.rdoc", "--line-numbers"]
|
20
|
+
s.require_paths = ["lib"]
|
21
|
+
s.rubyforge_project = "mocha"
|
22
|
+
s.summary = "Mocking and stubbing library"
|
23
|
+
|
24
|
+
s.add_dependency("metaclass", "~> 0.0.1")
|
25
|
+
if s.respond_to? :specification_version then
|
26
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
27
|
+
s.specification_version = 3
|
28
|
+
|
29
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
30
|
+
s.add_development_dependency("rake", ">= 0")
|
31
|
+
s.add_development_dependency("introspection", "~> 0.0.1")
|
32
|
+
s.add_development_dependency("rdoc", "~> 2.4.2")
|
33
|
+
else
|
34
|
+
s.add_dependency("rake", ">= 0")
|
35
|
+
s.add_dependency("introspection", "~> 0.0.1")
|
36
|
+
s.add_dependency("rdoc", "~> 2.4.2")
|
37
|
+
end
|
38
|
+
else
|
39
|
+
s.add_dependency("rake", ">= 0")
|
40
|
+
s.add_dependency("introspection", "~> 0.0.1")
|
41
|
+
s.add_dependency("rdoc", "~> 2.4.2")
|
42
|
+
end
|
43
|
+
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require File.expand_path('../../test_helper', __FILE__)
|
2
2
|
require 'test_runner'
|
3
3
|
require 'mocha/configuration'
|
4
|
+
require 'introspection'
|
4
5
|
|
5
6
|
module AcceptanceTest
|
6
7
|
|
@@ -35,4 +36,6 @@ module AcceptanceTest
|
|
35
36
|
Mocha::Mockery.instance.logger = @original_logger
|
36
37
|
end
|
37
38
|
|
39
|
+
include Introspection::Assertions
|
40
|
+
|
38
41
|
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require File.expand_path('../acceptance_test_helper', __FILE__)
|
2
|
+
require 'mocha'
|
3
|
+
|
4
|
+
class ExpectationsOnMultipleMethodsTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
include AcceptanceTest
|
7
|
+
|
8
|
+
def setup
|
9
|
+
setup_acceptance_test
|
10
|
+
end
|
11
|
+
|
12
|
+
def teardown
|
13
|
+
teardown_acceptance_test
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_should_expect_calls_to_multiple_methods
|
17
|
+
instance = Class.new do
|
18
|
+
def my_instance_method_1
|
19
|
+
:original_return_value_1
|
20
|
+
end
|
21
|
+
def my_instance_method_2
|
22
|
+
:original_return_value_2
|
23
|
+
end
|
24
|
+
end.new
|
25
|
+
test_result = run_as_test do
|
26
|
+
instance.expects(
|
27
|
+
:my_instance_method_1 => :new_return_value_1,
|
28
|
+
:my_instance_method_2 => :new_return_value_2
|
29
|
+
)
|
30
|
+
assert_equal :new_return_value_1, instance.my_instance_method_1
|
31
|
+
assert_equal :new_return_value_2, instance.my_instance_method_2
|
32
|
+
end
|
33
|
+
assert_passed(test_result)
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_should_stub_calls_to_multiple_methods
|
37
|
+
instance = Class.new do
|
38
|
+
def my_instance_method_1
|
39
|
+
:original_return_value_1
|
40
|
+
end
|
41
|
+
def my_instance_method_2
|
42
|
+
:original_return_value_2
|
43
|
+
end
|
44
|
+
end.new
|
45
|
+
test_result = run_as_test do
|
46
|
+
instance.stubs(
|
47
|
+
:my_instance_method_1 => :new_return_value_1,
|
48
|
+
:my_instance_method_2 => :new_return_value_2
|
49
|
+
)
|
50
|
+
assert_equal :new_return_value_1, instance.my_instance_method_1
|
51
|
+
assert_equal :new_return_value_2, instance.my_instance_method_2
|
52
|
+
end
|
53
|
+
assert_passed(test_result)
|
54
|
+
end
|
55
|
+
end
|
@@ -75,7 +75,7 @@ else
|
|
75
75
|
attr_reader :runner
|
76
76
|
|
77
77
|
def test_should_pass_mocha_test
|
78
|
-
|
78
|
+
run_test :test_mocha_with_fulfilled_expectation
|
79
79
|
|
80
80
|
assert_equal 0, runner.failures
|
81
81
|
assert_equal 0, runner.errors
|
@@ -83,7 +83,7 @@ else
|
|
83
83
|
end
|
84
84
|
|
85
85
|
def test_should_fail_mocha_test_due_to_unfulfilled_expectation
|
86
|
-
|
86
|
+
run_test :test_mocha_with_unfulfilled_expectation
|
87
87
|
|
88
88
|
assert_equal 1, runner.failures
|
89
89
|
assert_equal 0, runner.errors
|
@@ -92,7 +92,7 @@ else
|
|
92
92
|
end
|
93
93
|
|
94
94
|
def test_should_fail_mocha_test_due_to_unexpected_invocation
|
95
|
-
|
95
|
+
run_test :test_mocha_with_unexpected_invocation
|
96
96
|
|
97
97
|
assert_equal 1, runner.failures
|
98
98
|
assert_equal 0, runner.errors
|
@@ -101,7 +101,7 @@ else
|
|
101
101
|
end
|
102
102
|
|
103
103
|
def test_should_pass_stubba_test
|
104
|
-
|
104
|
+
run_test :test_stubba_with_fulfilled_expectation
|
105
105
|
|
106
106
|
assert_equal 0, runner.failures
|
107
107
|
assert_equal 0, runner.errors
|
@@ -109,7 +109,7 @@ else
|
|
109
109
|
end
|
110
110
|
|
111
111
|
def test_should_fail_stubba_test_due_to_unfulfilled_expectation
|
112
|
-
|
112
|
+
run_test :test_stubba_with_unfulfilled_expectation
|
113
113
|
|
114
114
|
assert_equal 1, runner.failures
|
115
115
|
assert_equal 0, runner.errors
|
@@ -118,7 +118,7 @@ else
|
|
118
118
|
end
|
119
119
|
|
120
120
|
def test_should_pass_mocha_test_with_matching_parameter
|
121
|
-
|
121
|
+
run_test :test_mocha_with_matching_parameter
|
122
122
|
|
123
123
|
assert_equal 0, runner.failures
|
124
124
|
assert_equal 0, runner.errors
|
@@ -126,7 +126,7 @@ else
|
|
126
126
|
end
|
127
127
|
|
128
128
|
def test_should_fail_mocha_test_with_non_matching_parameter
|
129
|
-
|
129
|
+
run_test :test_mocha_with_non_matching_parameter
|
130
130
|
|
131
131
|
assert_equal 1, runner.failures
|
132
132
|
assert_equal 0, runner.errors
|
@@ -135,6 +135,11 @@ else
|
|
135
135
|
end
|
136
136
|
|
137
137
|
private
|
138
|
+
|
139
|
+
def run_test(method_name)
|
140
|
+
run_method = (MiniTest::Unit::VERSION >= "2.1.0") ? :_run : :run
|
141
|
+
runner.send(run_method, ["-n", method_name.to_s])
|
142
|
+
end
|
138
143
|
|
139
144
|
def output
|
140
145
|
@output.rewind
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require File.expand_path('../acceptance_test_helper', __FILE__)
|
2
|
+
require 'mocha'
|
3
|
+
|
4
|
+
class RaiseExceptionTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
include AcceptanceTest
|
7
|
+
|
8
|
+
def setup
|
9
|
+
setup_acceptance_test
|
10
|
+
end
|
11
|
+
|
12
|
+
def teardown
|
13
|
+
teardown_acceptance_test
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_should_raise_exception
|
17
|
+
exception_class = Class.new(StandardError)
|
18
|
+
test_result = run_as_test do
|
19
|
+
foo = stub('foo')
|
20
|
+
foo.stubs(:bar).raises(exception_class, "my-message")
|
21
|
+
exception = assert_raises(exception_class) { foo.bar }
|
22
|
+
assert_equal "my-message", exception.message
|
23
|
+
end
|
24
|
+
assert_passed(test_result)
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_should_raise_two_different_exceptions
|
28
|
+
exception_one_class = Class.new(StandardError)
|
29
|
+
exception_two_class = Class.new(StandardError)
|
30
|
+
test_result = run_as_test do
|
31
|
+
foo = stub('foo')
|
32
|
+
foo.stubs(:bar).raises(exception_one_class).then.raises(exception_two_class)
|
33
|
+
assert_raises(exception_one_class) { foo.bar }
|
34
|
+
assert_raises(exception_two_class) { foo.bar }
|
35
|
+
end
|
36
|
+
assert_passed(test_result)
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
@@ -1,118 +1,18 @@
|
|
1
1
|
require File.expand_path('../acceptance_test_helper', __FILE__)
|
2
2
|
require 'mocha'
|
3
3
|
|
4
|
-
class
|
4
|
+
class StubClassMethodDefinedOnActiveRecordAssociationProxyTest < Test::Unit::TestCase
|
5
5
|
|
6
6
|
include AcceptanceTest
|
7
|
-
|
7
|
+
|
8
8
|
def setup
|
9
9
|
setup_acceptance_test
|
10
10
|
end
|
11
|
-
|
11
|
+
|
12
12
|
def teardown
|
13
13
|
teardown_acceptance_test
|
14
14
|
end
|
15
|
-
|
16
|
-
def test_should_stub_method_within_test
|
17
|
-
klass = Class.new do
|
18
|
-
class << self
|
19
|
-
def my_class_method
|
20
|
-
:original_return_value
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
test_result = run_as_test do
|
25
|
-
klass.stubs(:my_class_method).returns(:new_return_value)
|
26
|
-
assert_equal :new_return_value, klass.my_class_method
|
27
|
-
end
|
28
|
-
assert_passed(test_result)
|
29
|
-
end
|
30
15
|
|
31
|
-
def test_should_leave_stubbed_public_method_unchanged_after_test
|
32
|
-
klass = Class.new do
|
33
|
-
class << self
|
34
|
-
def my_class_method
|
35
|
-
:original_return_value
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
run_as_test do
|
40
|
-
klass.stubs(:my_class_method).returns(:new_return_value)
|
41
|
-
end
|
42
|
-
assert klass.public_methods(false).any? { |m| m.to_s == 'my_class_method' }
|
43
|
-
assert_equal :original_return_value, klass.my_class_method
|
44
|
-
end
|
45
|
-
|
46
|
-
def test_should_leave_stubbed_protected_method_unchanged_after_test
|
47
|
-
klass = Class.new do
|
48
|
-
class << self
|
49
|
-
def my_class_method
|
50
|
-
:original_return_value
|
51
|
-
end
|
52
|
-
protected :my_class_method
|
53
|
-
def my_unprotected_class_method
|
54
|
-
my_class_method
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
run_as_test do
|
59
|
-
klass.stubs(:my_class_method).returns(:new_return_value)
|
60
|
-
end
|
61
|
-
assert klass.protected_methods(false).any? { |m| m.to_s == 'my_class_method' }
|
62
|
-
assert_equal :original_return_value, klass.my_unprotected_class_method
|
63
|
-
end
|
64
|
-
|
65
|
-
def test_should_leave_stubbed_private_method_unchanged_after_test
|
66
|
-
klass = Class.new do
|
67
|
-
class << self
|
68
|
-
def my_class_method
|
69
|
-
:original_return_value
|
70
|
-
end
|
71
|
-
private :my_class_method
|
72
|
-
end
|
73
|
-
end
|
74
|
-
run_as_test do
|
75
|
-
klass.stubs(:my_class_method).returns(:new_return_value)
|
76
|
-
end
|
77
|
-
assert klass.private_methods(false).any? { |m| m.to_s == 'my_class_method' }
|
78
|
-
assert_equal :original_return_value, klass.send(:my_class_method)
|
79
|
-
end
|
80
|
-
|
81
|
-
def test_should_reset_class_expectations_after_test
|
82
|
-
klass = Class.new do
|
83
|
-
class << self
|
84
|
-
def my_class_method
|
85
|
-
:original_return_value
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|
89
|
-
run_as_test do
|
90
|
-
klass.stubs(:my_class_method)
|
91
|
-
end
|
92
|
-
assert_equal 0, klass.mocha.expectations.length
|
93
|
-
end
|
94
|
-
|
95
|
-
def test_should_be_able_to_stub_a_superclass_method
|
96
|
-
superklass = Class.new do
|
97
|
-
class << self
|
98
|
-
def my_superclass_method
|
99
|
-
:original_return_value
|
100
|
-
end
|
101
|
-
end
|
102
|
-
end
|
103
|
-
klass = Class.new(superklass)
|
104
|
-
test_result = run_as_test do
|
105
|
-
klass.stubs(:my_superclass_method).returns(:new_return_value)
|
106
|
-
assert_equal :new_return_value, klass.my_superclass_method
|
107
|
-
end
|
108
|
-
assert_passed(test_result)
|
109
|
-
superklass_public_methods = superklass.public_methods - superklass.superclass.public_methods
|
110
|
-
assert superklass_public_methods.any? { |m| m.to_s == 'my_superclass_method' }
|
111
|
-
klass_public_methods = klass.public_methods - klass.superclass.public_methods
|
112
|
-
assert !klass_public_methods.any? { |m| m.to_s == 'my_superclass_method' }
|
113
|
-
assert_equal :original_return_value, superklass.my_superclass_method
|
114
|
-
end
|
115
|
-
|
116
16
|
def test_should_be_able_to_stub_method_if_ruby18_public_methods_include_method_but_method_does_not_actually_exist_like_active_record_association_proxy
|
117
17
|
ruby18_klass = Class.new do
|
118
18
|
class << self
|
@@ -0,0 +1,72 @@
|
|
1
|
+
require File.expand_path('../acceptance_test_helper', __FILE__)
|
2
|
+
require 'mocha'
|
3
|
+
|
4
|
+
class StubClassMethodDefinedOnClassTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
include AcceptanceTest
|
7
|
+
|
8
|
+
def setup
|
9
|
+
setup_acceptance_test
|
10
|
+
end
|
11
|
+
|
12
|
+
def teardown
|
13
|
+
teardown_acceptance_test
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_should_stub_public_method_and_leave_it_unchanged_after_test
|
17
|
+
klass = Class.new do
|
18
|
+
class << self
|
19
|
+
def my_class_method
|
20
|
+
:original_return_value
|
21
|
+
end
|
22
|
+
public :my_class_method
|
23
|
+
end
|
24
|
+
end
|
25
|
+
assert_snapshot_unchanged(klass) do
|
26
|
+
test_result = run_as_test do
|
27
|
+
klass.stubs(:my_class_method).returns(:new_return_value)
|
28
|
+
assert_equal :new_return_value, klass.my_class_method
|
29
|
+
end
|
30
|
+
assert_passed(test_result)
|
31
|
+
end
|
32
|
+
assert_equal :original_return_value, klass.my_class_method
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_should_stub_protected_method_and_leave_it_unchanged_after_test
|
36
|
+
klass = Class.new do
|
37
|
+
class << self
|
38
|
+
def my_class_method
|
39
|
+
:original_return_value
|
40
|
+
end
|
41
|
+
protected :my_class_method
|
42
|
+
end
|
43
|
+
end
|
44
|
+
assert_snapshot_unchanged(klass) do
|
45
|
+
test_result = run_as_test do
|
46
|
+
klass.stubs(:my_class_method).returns(:new_return_value)
|
47
|
+
assert_equal :new_return_value, klass.send(:my_class_method)
|
48
|
+
end
|
49
|
+
assert_passed(test_result)
|
50
|
+
end
|
51
|
+
assert_equal :original_return_value, klass.send(:my_class_method)
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_should_stub_private_method_and_leave_it_unchanged_after_test
|
55
|
+
klass = Class.new do
|
56
|
+
class << self
|
57
|
+
def my_class_method
|
58
|
+
:original_return_value
|
59
|
+
end
|
60
|
+
private :my_class_method
|
61
|
+
end
|
62
|
+
end
|
63
|
+
assert_snapshot_unchanged(klass) do
|
64
|
+
test_result = run_as_test do
|
65
|
+
klass.stubs(:my_class_method).returns(:new_return_value)
|
66
|
+
assert_equal :new_return_value, klass.send(:my_class_method)
|
67
|
+
end
|
68
|
+
assert_passed(test_result)
|
69
|
+
end
|
70
|
+
assert_equal :original_return_value, klass.send(:my_class_method)
|
71
|
+
end
|
72
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
require File.expand_path('../acceptance_test_helper', __FILE__)
|
2
|
+
require 'mocha'
|
3
|
+
|
4
|
+
class StubClassMethodDefinedOnModuleTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
include AcceptanceTest
|
7
|
+
|
8
|
+
def setup
|
9
|
+
setup_acceptance_test
|
10
|
+
end
|
11
|
+
|
12
|
+
def teardown
|
13
|
+
teardown_acceptance_test
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_should_stub_public_method_and_leave_it_unchanged_after_test
|
17
|
+
mod = Module.new do
|
18
|
+
def my_class_method
|
19
|
+
:original_return_value
|
20
|
+
end
|
21
|
+
public :my_class_method
|
22
|
+
end
|
23
|
+
klass = Class.new do
|
24
|
+
extend mod
|
25
|
+
end
|
26
|
+
assert_snapshot_unchanged(klass) do
|
27
|
+
test_result = run_as_test do
|
28
|
+
klass.stubs(:my_class_method).returns(:new_return_value)
|
29
|
+
assert_equal :new_return_value, klass.my_class_method
|
30
|
+
end
|
31
|
+
assert_passed(test_result)
|
32
|
+
end
|
33
|
+
assert_equal :original_return_value, klass.my_class_method
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_should_stub_protected_method_and_leave_it_unchanged_after_test
|
37
|
+
mod = Module.new do
|
38
|
+
def my_class_method
|
39
|
+
:original_return_value
|
40
|
+
end
|
41
|
+
protected :my_class_method
|
42
|
+
end
|
43
|
+
klass = Class.new do
|
44
|
+
extend mod
|
45
|
+
end
|
46
|
+
assert_snapshot_unchanged(klass) do
|
47
|
+
test_result = run_as_test do
|
48
|
+
klass.stubs(:my_class_method).returns(:new_return_value)
|
49
|
+
assert_equal :new_return_value, klass.send(:my_class_method)
|
50
|
+
end
|
51
|
+
assert_passed(test_result)
|
52
|
+
end
|
53
|
+
assert_equal :original_return_value, klass.send(:my_class_method)
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_should_stub_private_method_and_leave_it_unchanged_after_test
|
57
|
+
mod = Module.new do
|
58
|
+
def my_class_method
|
59
|
+
:original_return_value
|
60
|
+
end
|
61
|
+
private :my_class_method
|
62
|
+
end
|
63
|
+
klass = Class.new do
|
64
|
+
extend mod
|
65
|
+
end
|
66
|
+
assert_snapshot_unchanged(klass) do
|
67
|
+
test_result = run_as_test do
|
68
|
+
klass.stubs(:my_class_method).returns(:new_return_value)
|
69
|
+
assert_equal :new_return_value, klass.send(:my_class_method)
|
70
|
+
end
|
71
|
+
assert_passed(test_result)
|
72
|
+
end
|
73
|
+
assert_equal :original_return_value, klass.send(:my_class_method)
|
74
|
+
end
|
75
|
+
end
|