mocha 0.2.1 → 0.3.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/README +6 -2
- data/RELEASE +11 -0
- data/Rakefile +1 -1
- data/TODO +1 -3
- data/lib/mocha.rb +1 -0
- data/lib/mocha/auto_verify.rb +18 -13
- data/lib/mocha/expectation.rb +18 -3
- data/lib/mocha/mock.rb +2 -19
- data/lib/mocha/mock_methods.rb +16 -13
- data/lib/shared/backtracefilter.rb +46 -0
- data/lib/smart_test_case/multiple_setup_and_teardown.rb +9 -1
- data/lib/stubba.rb +1 -0
- data/lib/stubba/any_instance_method.rb +9 -5
- data/lib/stubba/central.rb +8 -0
- data/lib/stubba/class_method.rb +15 -11
- data/lib/stubba/instance_method.rb +1 -1
- data/lib/stubba/object.rb +4 -4
- data/lib/stubba/setup_and_teardown.rb +8 -2
- data/test/all_tests.rb +4 -0
- data/test/execution_point.rb +34 -0
- data/test/mocha/auto_verify_test.rb +103 -3
- data/test/mocha/expectation_test.rb +64 -1
- data/test/mocha/mock_methods_test.rb +55 -19
- data/test/mocha/mock_test.rb +11 -38
- data/test/mocha_test_result_integration_test.rb +106 -0
- data/test/smart_test_case/multiple_setup_and_teardown_test.rb +132 -31
- data/test/stubba/any_instance_method_test.rb +14 -2
- data/test/stubba/central_test.rb +62 -2
- data/test/stubba/class_method_test.rb +19 -1
- data/test/stubba/object_test.rb +41 -8
- data/test/stubba/setup_and_teardown_test.rb +60 -2
- data/test/stubba_acceptance_test.rb +0 -5
- data/test/stubba_test_result_integration_test.rb +86 -0
- data/test/test_helper.rb +2 -2
- metadata +6 -2
data/test/stubba/object_test.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), "..", "test_helper")
|
2
2
|
require 'mocha/mock'
|
3
|
+
require 'method_definer'
|
3
4
|
|
4
5
|
require 'stubba/object'
|
5
6
|
|
@@ -31,23 +32,53 @@ class ObjectTest < Test::Unit::TestCase
|
|
31
32
|
$stubba = Mock.new
|
32
33
|
$stubba.expects(:stub).with(Stubba::InstanceMethod.new(instance, :method1))
|
33
34
|
instance.expects(:method1)
|
34
|
-
$stubba.verify
|
35
|
+
$stubba.verify
|
35
36
|
end
|
36
37
|
|
37
38
|
def test_should_build_and_store_expectation
|
38
39
|
instance = Object.new
|
39
|
-
$stubba = Mock.new
|
40
|
+
$stubba = Mock.new
|
41
|
+
$stubba.stubs(:stub)
|
40
42
|
expectation = instance.expects(:method1)
|
41
43
|
assert_equal [expectation], instance.mocha.expectations
|
42
44
|
end
|
43
45
|
|
44
46
|
def test_should_verify_expectations
|
45
47
|
instance = Object.new
|
46
|
-
$stubba = Mock.new
|
48
|
+
$stubba = Mock.new
|
49
|
+
$stubba.stubs(:stub)
|
47
50
|
instance.expects(:method1).with(:value1, :value2)
|
48
51
|
assert_raise(Test::Unit::AssertionFailedError) { instance.verify }
|
49
52
|
end
|
50
53
|
|
54
|
+
def test_should_pass_backtrace_into_expects
|
55
|
+
instance = Object.new
|
56
|
+
$stubba = Mock.new
|
57
|
+
$stubba.stubs(:stub)
|
58
|
+
mocha = Object.new
|
59
|
+
mocha.define_instance_accessor(:expects_parameters)
|
60
|
+
mocha.define_instance_method(:expects) { |*parameters| self.expects_parameters = parameters }
|
61
|
+
backtrace = Object.new
|
62
|
+
instance.define_instance_method(:mocha) { mocha }
|
63
|
+
instance.define_instance_method(:caller) { backtrace }
|
64
|
+
instance.expects(:method1)
|
65
|
+
assert_equal [:method1, backtrace], mocha.expects_parameters
|
66
|
+
end
|
67
|
+
|
68
|
+
def test_should_pass_backtrace_into_stubs
|
69
|
+
instance = Object.new
|
70
|
+
$stubba = Mock.new
|
71
|
+
$stubba.stubs(:stub)
|
72
|
+
mocha = Object.new
|
73
|
+
mocha.define_instance_accessor(:stubs_parameters)
|
74
|
+
mocha.define_instance_method(:stubs) { |*parameters| self.stubs_parameters = parameters }
|
75
|
+
backtrace = Object.new
|
76
|
+
instance.define_instance_method(:mocha) { mocha }
|
77
|
+
instance.define_instance_method(:caller) { backtrace }
|
78
|
+
instance.stubs(:method1)
|
79
|
+
assert_equal [:method1, backtrace], mocha.stubs_parameters
|
80
|
+
end
|
81
|
+
|
51
82
|
def test_should_build_any_instance_object
|
52
83
|
klass = Class.new
|
53
84
|
any_instance = klass.any_instance
|
@@ -67,12 +98,13 @@ class ObjectTest < Test::Unit::TestCase
|
|
67
98
|
$stubba = Mock.new
|
68
99
|
$stubba.expects(:stub).with(Stubba::ClassMethod.new(klass, :method1))
|
69
100
|
klass.expects(:method1)
|
70
|
-
$stubba.verify
|
101
|
+
$stubba.verify
|
71
102
|
end
|
72
103
|
|
73
104
|
def test_should_build_and_store_class_method_expectation
|
74
105
|
klass = Class.new
|
75
|
-
$stubba = Mock.new
|
106
|
+
$stubba = Mock.new
|
107
|
+
$stubba.stubs(:stub)
|
76
108
|
expectation = klass.expects(:method1)
|
77
109
|
assert_equal [expectation], klass.mocha.expectations
|
78
110
|
end
|
@@ -82,12 +114,13 @@ class ObjectTest < Test::Unit::TestCase
|
|
82
114
|
$stubba = Mock.new
|
83
115
|
$stubba.expects(:stub).with(Stubba::ClassMethod.new(mod, :method1))
|
84
116
|
mod.expects(:method1)
|
85
|
-
$stubba.verify
|
117
|
+
$stubba.verify
|
86
118
|
end
|
87
119
|
|
88
120
|
def test_should_build_and_store_module_method_expectation
|
89
121
|
mod = Module.new
|
90
|
-
$stubba = Mock.new
|
122
|
+
$stubba = Mock.new
|
123
|
+
$stubba.stubs(:stub)
|
91
124
|
expectation = mod.expects(:method1)
|
92
125
|
assert_equal [expectation], mod.mocha.expectations
|
93
126
|
end
|
@@ -128,5 +161,5 @@ class ObjectTest < Test::Unit::TestCase
|
|
128
161
|
any_instance = Class::AnyInstance.new(klass)
|
129
162
|
assert_equal klass, any_instance.stubba_object
|
130
163
|
end
|
131
|
-
|
164
|
+
|
132
165
|
end
|
@@ -41,9 +41,34 @@ class SetupAndTeardownTest < Test::Unit::TestCase
|
|
41
41
|
assert $stubba.is_a?(Stubba::Central)
|
42
42
|
end
|
43
43
|
|
44
|
+
def test_should_verify_all_expectations
|
45
|
+
test_case = stubbed_test_case_class.new
|
46
|
+
stubba = Mock.new
|
47
|
+
stubba.expects(:verify_all)
|
48
|
+
stubba.stubs(:unstub_all)
|
49
|
+
$stubba = stubba
|
50
|
+
|
51
|
+
test_case.teardown_stubs
|
52
|
+
|
53
|
+
stubba.verify
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_should_pass_block_to_add_assertion_to_test_case
|
57
|
+
test_case = stubbed_test_case_class.new
|
58
|
+
$stubba = Mock.new
|
59
|
+
$stubba.stubs(:verify_all).yields
|
60
|
+
$stubba.stubs(:unstub_all)
|
61
|
+
|
62
|
+
test_case.teardown_stubs
|
63
|
+
|
64
|
+
assert_equal true, test_case.add_assertion_called
|
65
|
+
end
|
66
|
+
|
44
67
|
def test_should_unstub_all_stubbed_methods
|
45
68
|
test_case = stubbed_test_case_class.new
|
46
|
-
stubba = Mock.new
|
69
|
+
stubba = Mock.new
|
70
|
+
stubba.stubs(:verify_all)
|
71
|
+
stubba.expects(:unstub_all)
|
47
72
|
$stubba = stubba
|
48
73
|
|
49
74
|
test_case.teardown_stubs
|
@@ -51,15 +76,46 @@ class SetupAndTeardownTest < Test::Unit::TestCase
|
|
51
76
|
stubba.verify
|
52
77
|
end
|
53
78
|
|
79
|
+
def test_should_unstub_all_stubbed_methods_even_if_verify_all_raises_exception
|
80
|
+
test_case = stubbed_test_case_class.new
|
81
|
+
stubba = Mock.new
|
82
|
+
stubba.stubs(:verify_all).raises(Exception)
|
83
|
+
stubba.expects(:unstub_all)
|
84
|
+
$stubba = stubba
|
85
|
+
|
86
|
+
assert_raises(Exception) { test_case.teardown_stubs }
|
87
|
+
|
88
|
+
stubba.verify
|
89
|
+
end
|
90
|
+
|
54
91
|
def test_should_set_stubba_to_nil
|
55
92
|
test_case = stubbed_test_case_class.new
|
56
|
-
$stubba = Mock.new
|
93
|
+
$stubba = Mock.new
|
94
|
+
$stubba.stubs(:verify_all)
|
95
|
+
$stubba.stubs(:unstub_all)
|
57
96
|
|
58
97
|
test_case.teardown_stubs
|
59
98
|
|
60
99
|
assert_nil $stubba
|
61
100
|
end
|
62
101
|
|
102
|
+
def test_should_set_stubba_to_nil_even_if_verify_all_raises_exception
|
103
|
+
test_case = stubbed_test_case_class.new
|
104
|
+
$stubba = Mock.new
|
105
|
+
$stubba.stubs(:verify_all).raises(Exception)
|
106
|
+
$stubba.stubs(:unstub_all)
|
107
|
+
|
108
|
+
assert_raises(Exception) { test_case.teardown_stubs }
|
109
|
+
|
110
|
+
assert_nil $stubba
|
111
|
+
end
|
112
|
+
|
113
|
+
def test_should_not_raise_exception_if_no_stubba_central_available
|
114
|
+
test_case = stubbed_test_case_class.new
|
115
|
+
$stubba = nil
|
116
|
+
assert_nothing_raised { test_case.teardown_stubs }
|
117
|
+
end
|
118
|
+
|
63
119
|
private
|
64
120
|
|
65
121
|
def stubbed_test_case_class
|
@@ -68,6 +124,8 @@ class SetupAndTeardownTest < Test::Unit::TestCase
|
|
68
124
|
define_method(:add_setup_method) {}
|
69
125
|
define_method(:add_teardown_method) {}
|
70
126
|
end
|
127
|
+
attr_accessor :add_assertion_called
|
128
|
+
define_method(:add_assertion) { self.add_assertion_called = true }
|
71
129
|
include SetupAndTeardown
|
72
130
|
end
|
73
131
|
end
|
@@ -35,7 +35,6 @@ class StubbaAcceptanceTest < Test::Unit::TestCase
|
|
35
35
|
widget = Widget.new
|
36
36
|
widget.expects(:model).returns('different_model')
|
37
37
|
assert_equal 'different_model', widget.model
|
38
|
-
widget.verify
|
39
38
|
end
|
40
39
|
|
41
40
|
def test_should_stub_module_method
|
@@ -75,14 +74,12 @@ class StubbaAcceptanceTest < Test::Unit::TestCase
|
|
75
74
|
def should_stub_module_method
|
76
75
|
Thingy.expects(:wotsit).returns(:dooda)
|
77
76
|
assert_equal :dooda, Thingy.wotsit
|
78
|
-
Thingy.verify
|
79
77
|
end
|
80
78
|
|
81
79
|
def should_stub_class_method
|
82
80
|
widgets = [Widget.new]
|
83
81
|
Widget.expects(:find).with(:all).returns(widgets)
|
84
82
|
assert_equal widgets, Widget.find(:all)
|
85
|
-
Widget.verify
|
86
83
|
end
|
87
84
|
|
88
85
|
def should_stub_two_different_class_methods
|
@@ -92,7 +89,6 @@ class StubbaAcceptanceTest < Test::Unit::TestCase
|
|
92
89
|
Widget.expects(:create).with(:model => 'wombat').returns(created_widget)
|
93
90
|
assert_equal found_widgets, Widget.find(:all)
|
94
91
|
assert_equal created_widget, Widget.create(:model => 'wombat')
|
95
|
-
Widget.verify
|
96
92
|
end
|
97
93
|
|
98
94
|
def should_stub_instance_method_on_any_instance_of_a_class
|
@@ -101,7 +97,6 @@ class StubbaAcceptanceTest < Test::Unit::TestCase
|
|
101
97
|
widget_2 = Widget.new
|
102
98
|
assert_equal 'another_model', widget_1.model
|
103
99
|
assert_equal 'another_model', widget_2.model
|
104
|
-
Widget.any_instance.verify
|
105
100
|
end
|
106
101
|
|
107
102
|
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'stubba/object'
|
3
|
+
require 'smart_test_case/multiple_setup_and_teardown'
|
4
|
+
require 'stubba/setup_and_teardown'
|
5
|
+
require 'shared/backtracefilter'
|
6
|
+
require 'execution_point'
|
7
|
+
|
8
|
+
class StubbaTestResultIntegrationTest < Test::Unit::TestCase
|
9
|
+
|
10
|
+
def test_should_include_expectation_verification_in_assertion_count
|
11
|
+
test_result = run_test do
|
12
|
+
object = Class.new { def message; end }.new
|
13
|
+
object.expects(:message)
|
14
|
+
object.message
|
15
|
+
end
|
16
|
+
assert_equal 1, test_result.assertion_count
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_should_include_assertions_in_assertion_count
|
20
|
+
test_result = run_test do
|
21
|
+
assert true
|
22
|
+
end
|
23
|
+
assert_equal 1, test_result.assertion_count
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_should_not_include_stubbing_expectation_verification_in_assertion_count
|
27
|
+
test_result = run_test do
|
28
|
+
object = Class.new { def message; end }.new
|
29
|
+
object.stubs(:message)
|
30
|
+
object.message
|
31
|
+
end
|
32
|
+
assert_equal 0, test_result.assertion_count
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_should_include_expectation_verification_failure_in_failure_count
|
36
|
+
test_result = run_test do
|
37
|
+
object = Class.new { def message; end }.new
|
38
|
+
object.expects(:message)
|
39
|
+
end
|
40
|
+
assert_equal 1, test_result.failure_count
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_should_include_assertion_failure_in_failure_count
|
44
|
+
test_result = run_test do
|
45
|
+
flunk
|
46
|
+
end
|
47
|
+
assert_equal 1, test_result.failure_count
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_should_display_backtrace_indicating_line_number_where_expects_was_called
|
51
|
+
test_result = Test::Unit::TestResult.new
|
52
|
+
faults = []
|
53
|
+
test_result.add_listener(Test::Unit::TestResult::FAULT, &lambda { |fault| faults << fault })
|
54
|
+
execution_point = nil
|
55
|
+
run_test(test_result) do
|
56
|
+
object = Class.new { def message; end }.new
|
57
|
+
execution_point = ExecutionPoint.current; object.expects(:message)
|
58
|
+
end
|
59
|
+
assert_equal 1, faults.size
|
60
|
+
assert_equal execution_point, ExecutionPoint.new(faults.first.location)
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_should_display_backtrace_indicating_line_number_where_failing_assertion_was_called
|
64
|
+
test_result = Test::Unit::TestResult.new
|
65
|
+
faults = []
|
66
|
+
test_result.add_listener(Test::Unit::TestResult::FAULT, &lambda { |fault| faults << fault })
|
67
|
+
execution_point = nil
|
68
|
+
run_test(test_result) do
|
69
|
+
execution_point = ExecutionPoint.current; flunk
|
70
|
+
end
|
71
|
+
assert_equal 1, faults.size
|
72
|
+
assert_equal execution_point, ExecutionPoint.new(faults.first.location)
|
73
|
+
end
|
74
|
+
|
75
|
+
def run_test(test_result = Test::Unit::TestResult.new, &block)
|
76
|
+
test_class = Class.new(Test::Unit::TestCase) do
|
77
|
+
include MultipleSetupAndTeardown
|
78
|
+
include SetupAndTeardown
|
79
|
+
define_method(:test_me, &block)
|
80
|
+
end
|
81
|
+
test = test_class.new(:test_me)
|
82
|
+
test.run(test_result) {}
|
83
|
+
test_result
|
84
|
+
end
|
85
|
+
|
86
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
$:.unshift File.join(File.dirname(__FILE__), "..", "lib")
|
2
|
-
$:.unshift File.join(File.dirname(__FILE__))
|
1
|
+
$:.unshift File.expand_path(File.join(File.dirname(__FILE__), "..", "lib"))
|
2
|
+
$:.unshift File.expand_path(File.join(File.dirname(__FILE__)))
|
3
3
|
|
4
4
|
require 'test/unit'
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
|
|
3
3
|
specification_version: 1
|
4
4
|
name: mocha
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.
|
7
|
-
date: 2006-08-
|
6
|
+
version: 0.3.0
|
7
|
+
date: 2006-08-24 00:00:00 +01:00
|
8
8
|
summary: Mocking and stubbing library
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -46,6 +46,7 @@ files:
|
|
46
46
|
- lib/mocha/mock.rb
|
47
47
|
- lib/mocha/mock_methods.rb
|
48
48
|
- lib/mocha/pretty_parameters.rb
|
49
|
+
- lib/shared/backtracefilter.rb
|
49
50
|
- lib/smart_test_case/multiple_setup_and_teardown.rb
|
50
51
|
- lib/stubba/any_instance_method.rb
|
51
52
|
- lib/stubba/central.rb
|
@@ -56,10 +57,13 @@ files:
|
|
56
57
|
- test/active_record_test_case.rb
|
57
58
|
- test/all_tests.rb
|
58
59
|
- test/auto_mock_acceptance_test.rb
|
60
|
+
- test/execution_point.rb
|
59
61
|
- test/method_definer.rb
|
60
62
|
- test/mocha_acceptance_test.rb
|
63
|
+
- test/mocha_test_result_integration_test.rb
|
61
64
|
- test/stubba_acceptance_test.rb
|
62
65
|
- test/stubba_integration_test.rb
|
66
|
+
- test/stubba_test_result_integration_test.rb
|
63
67
|
- test/test_helper.rb
|
64
68
|
- test/auto_mocha/auto_mock_test.rb
|
65
69
|
- test/auto_mocha/mock_class_test.rb
|