mocha 0.9.12 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|