flexmock 0.8.0 → 0.8.1
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/CHANGES +6 -0
- data/README +1 -1
- data/Rakefile +1 -1
- data/TAGS +282 -192
- data/doc/releases/flexmock-0.8.0.rdoc +2 -2
- data/lib/flexmock/expectation.rb +3 -3
- data/lib/flexmock/mock_container.rb +3 -0
- data/lib/flexmock/partial_mock.rb +14 -9
- data/lib/flexmock/rails/view_mocking.rb +76 -5
- data/test/test_deprecated_methods.rb +1 -1
- data/test/test_flexmodel.rb +1 -0
- data/test/test_new_instances.rb +9 -10
- data/test/test_rails_view_stub.rb +46 -9
- data/test/test_record_mode.rb +3 -0
- metadata +59 -52
data/CHANGES
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
= Changes for FlexMock
|
2
2
|
|
3
|
+
== Pre-Version 0.8.1
|
4
|
+
|
5
|
+
* Added Joe O'Brien's patch to allow view stubbing in Rails 2.0
|
6
|
+
* Added Evan Phoenix's patch to remove allocate from default
|
7
|
+
allocators in new_instances (for Rubinius compatibility).
|
8
|
+
|
3
9
|
== Version 0.8.0
|
4
10
|
|
5
11
|
* Added by_default
|
data/README
CHANGED
data/Rakefile
CHANGED
data/TAGS
CHANGED
@@ -1,12 +1,10 @@
|
|
1
1
|
|
2
|
-
install.rb,29
|
3
|
-
def indir(newdir)indir7,68
|
4
|
-
|
5
2
|
doc/jamis.rb,43
|
6
3
|
module RDocRDoc1,0
|
7
4
|
module PagePage2,12
|
8
5
|
|
9
|
-
|
6
|
+
install.rb,29
|
7
|
+
def indir(newdir)indir7,68
|
10
8
|
|
11
9
|
lib/flexmock/argument_matchers.rb,424
|
12
10
|
class FlexMockFlexMock14,338
|
@@ -34,23 +32,24 @@ lib/flexmock/base.rb,0
|
|
34
32
|
lib/flexmock/composite.rb,30
|
35
33
|
class FlexMockFlexMock8,133
|
36
34
|
|
37
|
-
lib/flexmock/core.rb,
|
35
|
+
lib/flexmock/core.rb,900
|
38
36
|
class FlexMockFlexMock46,1290
|
39
37
|
def initialize(name="unknown", container=nil)initialize55,1560
|
40
38
|
def inspectinspect65,1854
|
41
39
|
def flexmock_verifyflexmock_verify71,2014
|
42
40
|
def flexmock_teardownflexmock_teardown82,2255
|
43
41
|
def should_ignore_missingshould_ignore_missing86,2335
|
44
|
-
def
|
45
|
-
def
|
46
|
-
def
|
47
|
-
def
|
48
|
-
def
|
49
|
-
def
|
50
|
-
def
|
51
|
-
def
|
52
|
-
def
|
53
|
-
def
|
42
|
+
def by_defaultby_default91,2447
|
43
|
+
def method_missing(sym, *args, &block)method_missing97,2576
|
44
|
+
def respond_to?(sym, *args)respond_to?114,3048
|
45
|
+
def flexmock_find_expectation(method_name, *args) # :nodoc:flexmock_find_expectation119,3204
|
46
|
+
def flexmock_expectations_for(method_name) # :nodoc:flexmock_expectations_for125,3409
|
47
|
+
def method(sym)method130,3568
|
48
|
+
def should_receive(*args)should_receive159,4607
|
49
|
+
def should_expectshould_expect182,5352
|
50
|
+
def flexmock_wrap(&block)flexmock_wrap190,5542
|
51
|
+
def override_existing_method(sym)override_existing_method204,6101
|
52
|
+
def sclasssclass213,6321
|
54
53
|
|
55
54
|
lib/flexmock/core_class_methods.rb,289
|
56
55
|
class FlexMockFlexMock15,371
|
@@ -91,44 +90,44 @@ class FlexMockFlexMock14,337
|
|
91
90
|
def verify_call(*args)verify_call55,1562
|
92
91
|
def _return_value(args) # :nodoc:_return_value64,1782
|
93
92
|
def return_value(args)return_value69,1922
|
94
|
-
def perform_yielding(args)perform_yielding83,
|
95
|
-
def eligible?eligible?99,
|
96
|
-
def call_count_constrained?call_count_constrained?104,
|
97
|
-
def validate_ordervalidate_order109,
|
98
|
-
def flexmock_verifyflexmock_verify121,
|
99
|
-
def match_args(args)match_args129,
|
100
|
-
def match_arg(expected, actual)match_arg138,
|
101
|
-
def with(*args)with145,
|
102
|
-
def with_no_argswith_no_args151,
|
103
|
-
def with_any_argswith_any_args157,
|
104
|
-
def and_return(*args, &block)and_return188,
|
105
|
-
def and_return_undefinedand_return_undefined212,
|
106
|
-
def and_yield(*yield_values)and_yield228,
|
107
|
-
def and_raise(exception, *args)and_raise252,
|
108
|
-
def and_throw(sym, value=nil)and_throw266,
|
109
|
-
def zero_or_more_timeszero_or_more_times272,
|
110
|
-
def times(limit)times279,
|
111
|
-
def nevernever288,
|
112
|
-
def onceonce295,
|
113
|
-
def twicetwice302,
|
114
|
-
def at_leastat_least314,
|
115
|
-
def at_mostat_most327,
|
116
|
-
def ordered(group_name=nil)ordered356,
|
117
|
-
def globallyglobally368,
|
118
|
-
def define_ordered(group_name, ordering)define_ordered374,
|
119
|
-
def by_defaultby_default388,
|
120
|
-
class CompositeExpectationCompositeExpectation399,
|
121
|
-
def initializeinitialize402,
|
122
|
-
def add(expectation)add407,
|
123
|
-
def method_missing(sym, *args, &block)method_missing412,
|
124
|
-
def order_numberorder_number423,
|
125
|
-
def mockmock428,
|
126
|
-
def should_receive(*args, &block)should_receive434,
|
127
|
-
def to_sto_s439,
|
128
|
-
class ExpectationRecorderExpectationRecorder453,
|
129
|
-
def initializeinitialize456,
|
130
|
-
def method_missing(sym, *args, &block)method_missing461,
|
131
|
-
def apply(mock)apply469,
|
93
|
+
def perform_yielding(args)perform_yielding83,2253
|
94
|
+
def eligible?eligible?99,2839
|
95
|
+
def call_count_constrained?call_count_constrained?104,2988
|
96
|
+
def validate_ordervalidate_order109,3098
|
97
|
+
def flexmock_verifyflexmock_verify121,3473
|
98
|
+
def match_args(args)match_args129,3670
|
99
|
+
def match_arg(expected, actual)match_arg138,4016
|
100
|
+
def with(*args)with145,4245
|
101
|
+
def with_no_argswith_no_args151,4379
|
102
|
+
def with_any_argswith_any_args157,4512
|
103
|
+
def and_return(*args, &block)and_return188,5521
|
104
|
+
def and_return_undefinedand_return_undefined212,6239
|
105
|
+
def and_yield(*yield_values)and_yield228,6808
|
106
|
+
def and_raise(exception, *args)and_raise252,7571
|
107
|
+
def and_throw(sym, value=nil)and_throw266,7936
|
108
|
+
def zero_or_more_timeszero_or_more_times272,8111
|
109
|
+
def times(limit)times279,8334
|
110
|
+
def nevernever288,8681
|
111
|
+
def onceonce295,8896
|
112
|
+
def twicetwice302,9111
|
113
|
+
def at_leastat_least314,9437
|
114
|
+
def at_mostat_most327,9816
|
115
|
+
def ordered(group_name=nil)ordered356,11085
|
116
|
+
def globallyglobally368,11465
|
117
|
+
def define_ordered(group_name, ordering)define_ordered374,11580
|
118
|
+
def by_defaultby_default388,12078
|
119
|
+
class CompositeExpectationCompositeExpectation399,12485
|
120
|
+
def initializeinitialize402,12559
|
121
|
+
def add(expectation)add407,12655
|
122
|
+
def method_missing(sym, *args, &block)method_missing412,12796
|
123
|
+
def order_numberorder_number423,13175
|
124
|
+
def mockmock428,13285
|
125
|
+
def should_receive(*args, &block)should_receive434,13453
|
126
|
+
def to_sto_s439,13599
|
127
|
+
class ExpectationRecorderExpectationRecorder453,14057
|
128
|
+
def initializeinitialize456,14117
|
129
|
+
def method_missing(sym, *args, &block)method_missing461,14228
|
130
|
+
def apply(mock)apply469,14504
|
132
131
|
|
133
132
|
lib/flexmock/expectation_director.rb,483
|
134
133
|
class FlexMockFlexMock15,363
|
@@ -139,7 +138,7 @@ class FlexMockFlexMock15,363
|
|
139
138
|
def find_expectation(*args) # :nodoc:find_expectation51,1584
|
140
139
|
def flexmock_verify # :nodoc:flexmock_verify59,1909
|
141
140
|
def defaultify_expectation(exp) # :nodoc:defaultify_expectation66,2120
|
142
|
-
def find_expectation_in(expectations, *args)find_expectation_in78,
|
141
|
+
def find_expectation_in(expectations, *args)find_expectation_in78,2401
|
143
142
|
|
144
143
|
lib/flexmock/mock_container.rb,882
|
145
144
|
class FlexMockFlexMock15,371
|
@@ -153,10 +152,10 @@ class FlexMockFlexMock15,371
|
|
153
152
|
def next_idnext_id177,6719
|
154
153
|
def parse_should_args(mock, args, &block) # :nodoc:parse_should_args190,7192
|
155
154
|
def add_model_methods(mock, model_class, id)add_model_methods208,7705
|
156
|
-
def make_partial_proxy(container, obj, name, safe_mode)make_partial_proxy
|
157
|
-
def build_demeter_chain(mock, arg, &block)build_demeter_chain
|
158
|
-
def check_proper_mock(mock, method_name)check_proper_mock
|
159
|
-
def check_method_names(names)check_method_names
|
155
|
+
def make_partial_proxy(container, obj, name, safe_mode)make_partial_proxy232,8564
|
156
|
+
def build_demeter_chain(mock, arg, &block)build_demeter_chain277,10417
|
157
|
+
def check_proper_mock(mock, method_name)check_proper_mock302,11268
|
158
|
+
def check_method_names(names)check_method_names312,11675
|
160
159
|
|
161
160
|
lib/flexmock/noop.rb,0
|
162
161
|
|
@@ -173,26 +172,36 @@ lib/flexmock/partial_mock.rb,1380
|
|
173
172
|
class FlexMockFlexMock14,337
|
174
173
|
class PartialMockProxyPartialMockProxy26,968
|
175
174
|
def initialize(obj, mock, safe_mode)initialize40,1310
|
176
|
-
def flexmock_getflexmock_get
|
177
|
-
def should_receive(*args)should_receive
|
178
|
-
def add_mock_method(obj, method_name)add_mock_method
|
179
|
-
def new_instances(*allocators, &block)new_instances
|
180
|
-
def invoke_original(method, args)invoke_original
|
181
|
-
def flexmock_verifyflexmock_verify
|
182
|
-
def flexmock_teardownflexmock_teardown
|
183
|
-
def flexmock_containerflexmock_container
|
184
|
-
def flexmock_container=(container)flexmock_container=
|
185
|
-
def flexmock_expectations_for(method_name)flexmock_expectations_for
|
186
|
-
def sclasssclass
|
187
|
-
def singleton?(method_name)singleton?
|
188
|
-
def hide_existing_method(method_name)hide_existing_method
|
189
|
-
def stow_existing_definition(method_name)stow_existing_definition
|
190
|
-
def create_alias_for_existing_method(method_name)create_alias_for_existing_method
|
191
|
-
def define_proxy_method(method_name)define_proxy_method
|
192
|
-
def restore_original_definition(method_name)restore_original_definition
|
193
|
-
def remove_current_method(method_name)remove_current_method
|
194
|
-
def detached?detached?
|
195
|
-
def new_name(old_name)new_name
|
175
|
+
def flexmock_getflexmock_get55,1675
|
176
|
+
def should_receive(*args)should_receive79,2615
|
177
|
+
def add_mock_method(obj, method_name)add_mock_method90,2893
|
178
|
+
def new_instances(*allocators, &block)new_instances118,3947
|
179
|
+
def invoke_original(method, args)invoke_original139,4749
|
180
|
+
def flexmock_verifyflexmock_verify147,5043
|
181
|
+
def flexmock_teardownflexmock_teardown152,5179
|
182
|
+
def flexmock_containerflexmock_container164,5517
|
183
|
+
def flexmock_container=(container)flexmock_container=170,5712
|
184
|
+
def flexmock_expectations_for(method_name)flexmock_expectations_for174,5828
|
185
|
+
def sclasssclass181,5989
|
186
|
+
def singleton?(method_name)singleton?187,6130
|
187
|
+
def hide_existing_method(method_name)hide_existing_method197,6592
|
188
|
+
def stow_existing_definition(method_name)stow_existing_definition204,6809
|
189
|
+
def create_alias_for_existing_method(method_name)create_alias_for_existing_method224,7526
|
190
|
+
def define_proxy_method(method_name)define_proxy_method242,8045
|
191
|
+
def restore_original_definition(method_name)restore_original_definition263,8745
|
192
|
+
def remove_current_method(method_name)remove_current_method275,9109
|
193
|
+
def detached?detached?280,9270
|
194
|
+
def new_name(old_name)new_name285,9378
|
195
|
+
|
196
|
+
lib/flexmock/rails/view_mocking.rb,404
|
197
|
+
class FlexMockFlexMock3,20
|
198
|
+
module MockContainerMockContainer4,35
|
199
|
+
def rails_versionrails_version6,59
|
200
|
+
def should_render_view(template_name=nil)should_render_view25,684
|
201
|
+
def should_render_view_prior_version_124(template_name) # :nodoc:should_render_view_prior_version_12437,1045
|
202
|
+
def should_render_view_after_version_124(template_name)should_render_view_after_version_12457,1795
|
203
|
+
|
204
|
+
lib/flexmock/rails.rb,0
|
196
205
|
|
197
206
|
lib/flexmock/recorder.rb,271
|
198
207
|
class FlexMockFlexMock14,347
|
@@ -246,6 +255,8 @@ class FlexMockFlexMock14,337
|
|
246
255
|
class AtMostCountValidator < CountValidatorAtMostCountValidator69,2058
|
247
256
|
def validate(n)validate71,2173
|
248
257
|
|
258
|
+
lib/flexmock.rb,0
|
259
|
+
|
249
260
|
test/asserts.rb,139
|
250
261
|
class FlexMockFlexMock12,312
|
251
262
|
module FailureAssertionFailureAssertion15,368
|
@@ -256,6 +267,8 @@ class FlexMockFlexMock3,20
|
|
256
267
|
module RedirectErrorRedirectError4,35
|
257
268
|
def redirect_errorredirect_error5,58
|
258
269
|
|
270
|
+
test/rspec_integration/integration_spec.rb,0
|
271
|
+
|
259
272
|
test/test_aliasing.rb,522
|
260
273
|
class FlexMockFlexMock6,61
|
261
274
|
module StubsAndExpectsStubsAndExpects7,76
|
@@ -323,36 +336,52 @@ class TestFlexMock < Test::Unit::TestCaseTestFlexMock17,420
|
|
323
336
|
def test_called_with_blocktest_called_with_block42,898
|
324
337
|
def test_return_valuetest_return_value49,1096
|
325
338
|
def test_handle_missing_methodtest_handle_missing_method54,1201
|
326
|
-
def test_ignore_missing_methodtest_ignore_missing_method62,
|
327
|
-
def test_good_countstest_good_counts68,
|
328
|
-
def test_bad_countstest_bad_counts76,
|
329
|
-
def test_undetermined_countstest_undetermined_counts87,
|
330
|
-
def test_zero_countstest_zero_counts96,
|
331
|
-
def test_file_io_with_usetest_file_io_with_use105,
|
332
|
-
def count_lines(stream)count_lines113,
|
333
|
-
def test_usetest_use121,
|
334
|
-
def test_failures_during_usetest_failures_during_use130,
|
335
|
-
def test_sequential_valuestest_sequential_values140,
|
336
|
-
def test_respond_to_returns_false_for_non_handled_methodstest_respond_to_returns_false_for_non_handled_methods149,
|
337
|
-
def test_respond_to_returns_true_for_explicit_methodstest_respond_to_returns_true_for_explicit_methods153,
|
338
|
-
def test_respond_to_returns_true_for_missing_methods_when_ignoring_missingtest_respond_to_returns_true_for_missing_methods_when_ignoring_missing158,
|
339
|
-
def test_respond_to_returns_true_for_missing_methods_when_ignoring_missing_using_shouldtest_respond_to_returns_true_for_missing_methods_when_ignoring_missing_using_should163,
|
340
|
-
def test_method_proc_raises_error_on_unknowntest_method_proc_raises_error_on_unknown168,
|
341
|
-
def test_method_returns_callable_proctest_method_returns_callable_proc174,
|
342
|
-
def test_method_returns_do_nothing_proc_for_missing_methodstest_method_returns_do_nothing_proc_for_missing_methods183,
|
343
|
-
class TestDeprecatedOrderingMethods < Test::Unit::TestCaseTestDeprecatedOrderingMethods191,
|
344
|
-
def test_deprecated_ordering_methodstest_deprecated_ordering_methods195,
|
345
|
-
class TestAnyInstance < Test::Unit::TestCaseTestAnyInstance207,
|
346
|
-
class DogDog211,
|
347
|
-
def barkbark212,
|
348
|
-
def test_any_instance_still_works_for_backwards_compatibilitytest_any_instance_still_works_for_backwards_compatibility217,
|
349
|
-
|
350
|
-
test/
|
339
|
+
def test_ignore_missing_methodtest_ignore_missing_method62,1431
|
340
|
+
def test_good_countstest_good_counts68,1562
|
341
|
+
def test_bad_countstest_bad_counts76,1701
|
342
|
+
def test_undetermined_countstest_undetermined_counts87,1918
|
343
|
+
def test_zero_countstest_zero_counts96,2063
|
344
|
+
def test_file_io_with_usetest_file_io_with_use105,2242
|
345
|
+
def count_lines(stream)count_lines113,2446
|
346
|
+
def test_usetest_use121,2564
|
347
|
+
def test_failures_during_usetest_failures_during_use130,2721
|
348
|
+
def test_sequential_valuestest_sequential_values140,2940
|
349
|
+
def test_respond_to_returns_false_for_non_handled_methodstest_respond_to_returns_false_for_non_handled_methods149,3174
|
350
|
+
def test_respond_to_returns_true_for_explicit_methodstest_respond_to_returns_true_for_explicit_methods153,3309
|
351
|
+
def test_respond_to_returns_true_for_missing_methods_when_ignoring_missingtest_respond_to_returns_true_for_missing_methods_when_ignoring_missing158,3468
|
352
|
+
def test_respond_to_returns_true_for_missing_methods_when_ignoring_missing_using_shouldtest_respond_to_returns_true_for_missing_methods_when_ignoring_missing_using_should163,3649
|
353
|
+
def test_method_proc_raises_error_on_unknowntest_method_proc_raises_error_on_unknown168,3845
|
354
|
+
def test_method_returns_callable_proctest_method_returns_callable_proc174,3963
|
355
|
+
def test_method_returns_do_nothing_proc_for_missing_methodstest_method_returns_do_nothing_proc_for_missing_methods183,4219
|
356
|
+
class TestDeprecatedOrderingMethods < Test::Unit::TestCaseTestDeprecatedOrderingMethods191,4446
|
357
|
+
def test_deprecated_ordering_methodstest_deprecated_ordering_methods195,4569
|
358
|
+
class TestAnyInstance < Test::Unit::TestCaseTestAnyInstance207,4965
|
359
|
+
class DogDog211,5074
|
360
|
+
def barkbark212,5086
|
361
|
+
def test_any_instance_still_works_for_backwards_compatibilitytest_any_instance_still_works_for_backwards_compatibility217,5126
|
362
|
+
|
363
|
+
test/test_examples_from_readme.rb,1207
|
351
364
|
class TemperatureSamplerTemperatureSampler15,352
|
352
365
|
def initialize(sensor)initialize16,377
|
353
366
|
def average_tempaverage_temp20,430
|
354
367
|
class TestTemperatureSampler < Test::Unit::TestCaseTestTemperatureSampler26,557
|
355
368
|
def test_tempurature_samplertest_tempurature_sampler29,639
|
369
|
+
class TestExamplesFromReadme < Test::Unit::TestCaseTestExamplesFromReadme38,918
|
370
|
+
def test_simple_return_valuestest_simple_return_values41,1000
|
371
|
+
def test_returning_an_undefined_valuetest_returning_an_undefined_value47,1140
|
372
|
+
def test_dbtest_db53,1280
|
373
|
+
def test_query_and_updatetest_query_and_update62,1510
|
374
|
+
def test_ordered_queriestest_ordered_queries71,1763
|
375
|
+
def test_ordered_queries_in_record_modetest_ordered_queries_in_record_mode89,2362
|
376
|
+
def test_build_xmltest_build_xml106,2894
|
377
|
+
def known_good_way_to_build_xml(rec)known_good_way_to_build_xml115,3149
|
378
|
+
def new_way_to_build_xml(rec)new_way_to_build_xml120,3219
|
379
|
+
def test_multiple_getstest_multiple_gets124,3307
|
380
|
+
def test_an_important_messagetest_an_important_message133,3552
|
381
|
+
class QuoteServiceQuoteService142,3782
|
382
|
+
class PortfolioPortfolio144,3809
|
383
|
+
def valuevalue145,3827
|
384
|
+
def test_portfolio_valuetest_portfolio_value150,3887
|
356
385
|
|
357
386
|
test/test_extended_should_receive.rb,809
|
358
387
|
module ExtendedShouldReceiveTestsExtendedShouldReceiveTests15,352
|
@@ -367,14 +396,14 @@ class TestExtendedShouldReceiveOnPartialMockProxies < Test::Unit::TestCaseTestE
|
|
367
396
|
def setupsetup65,1770
|
368
397
|
|
369
398
|
test/test_flexmodel.rb,528
|
370
|
-
class DummyModelDummyModel
|
371
|
-
class ChildModel < DummyModelChildModel
|
372
|
-
class TestFlexModel < Test::Unit::TestCaseTestFlexModel
|
373
|
-
def test_initial_conditionstest_initial_conditions
|
374
|
-
def test_classifying_mock_modelstest_classifying_mock_models
|
375
|
-
def test_mock_models_have_different_idstest_mock_models_have_different_ids
|
376
|
-
def test_mock_models_can_have_quick_defstest_mock_models_can_have_quick_defs
|
377
|
-
def test_mock_models_can_have_blockstest_mock_models_can_have_blocks
|
399
|
+
class DummyModelDummyModel6,61
|
400
|
+
class ChildModel < DummyModelChildModel9,83
|
401
|
+
class TestFlexModel < Test::Unit::TestCaseTestFlexModel13,189
|
402
|
+
def test_initial_conditionstest_initial_conditions16,262
|
403
|
+
def test_classifying_mock_modelstest_classifying_mock_models28,663
|
404
|
+
def test_mock_models_have_different_idstest_mock_models_have_different_ids38,910
|
405
|
+
def test_mock_models_can_have_quick_defstest_mock_models_can_have_quick_defs44,1061
|
406
|
+
def test_mock_models_can_have_blockstest_mock_models_can_have_blocks49,1201
|
378
407
|
|
379
408
|
test/test_naming.rb,816
|
380
409
|
class TestNaming < Test::Unit::TestCaseTestNaming15,352
|
@@ -390,7 +419,7 @@ class TestNaming < Test::Unit::TestCaseTestNaming15,352
|
|
390
419
|
def test_partial_mocks_use_original_inspecttest_partial_mocks_use_original_inspect74,1722
|
391
420
|
def test_partial_mocks_can_override_inspecttest_partial_mocks_can_override_inspect80,1886
|
392
421
|
|
393
|
-
test/test_new_instances.rb,
|
422
|
+
test/test_new_instances.rb,2271
|
394
423
|
class TestNewInstances < Test::Unit::TestCaseTestNewInstances16,382
|
395
424
|
class DogDog20,494
|
396
425
|
def barkbark21,506
|
@@ -408,87 +437,147 @@ class TestNewInstances < Test::Unit::TestCaseTestNewInstances16,382
|
|
408
437
|
def test_new_gets_block_after_restubbingtest_new_gets_block_after_restubbing81,1782
|
409
438
|
def test_new_instances_stub_verification_happens_on_teardowntest_new_instances_stub_verification_happens_on_teardown94,2107
|
410
439
|
def test_new_instances_reports_error_on_non_classestest_new_instances_reports_error_on_non_classes104,2470
|
411
|
-
def
|
412
|
-
def
|
413
|
-
def
|
414
|
-
def
|
415
|
-
def
|
416
|
-
def test_blocks_on_new_do_not_have_stubs_installedtest_blocks_on_new_do_not_have_stubs_installed
|
417
|
-
def test_new_instances_accept_chained_expectationstest_new_instances_accept_chained_expectations
|
418
|
-
def test_fancy_use_of_chained_should_receivedtest_fancy_use_of_chained_should_received
|
419
|
-
def test_writable_accessorstest_writable_accessors
|
420
|
-
def test_ordering_can_be_specifiedtest_ordering_can_be_specified
|
421
|
-
def test_ordering_can_be_specified_in_groupstest_ordering_can_be_specified_in_groups
|
422
|
-
|
423
|
-
test/test_partial_mock.rb,
|
440
|
+
def test_does_not_by_default_stub_objects_created_with_allocatetest_does_not_by_default_stub_objects_created_with_allocate114,2752
|
441
|
+
def test_can_explicitly_stub_objects_created_with_allocatetest_can_explicitly_stub_objects_created_with_allocate122,2982
|
442
|
+
def test_can_stub_objects_created_with_arbitrary_class_methodstest_can_stub_objects_created_with_arbitrary_class_methods130,3221
|
443
|
+
def test_stubbing_arbitrary_class_methods_leaves_new_alonetest_stubbing_arbitrary_class_methods_leaves_new_alone137,3446
|
444
|
+
def test_stubbing_new_and_allocate_doesnt_double_stub_objects_on_newtest_stubbing_new_and_allocate_doesnt_double_stub_objects_on_new144,3661
|
445
|
+
def test_blocks_on_new_do_not_have_stubs_installedtest_blocks_on_new_do_not_have_stubs_installed157,4116
|
446
|
+
def test_new_instances_accept_chained_expectationstest_new_instances_accept_chained_expectations171,4456
|
447
|
+
def test_fancy_use_of_chained_should_receivedtest_fancy_use_of_chained_should_received179,4728
|
448
|
+
def test_writable_accessorstest_writable_accessors184,4885
|
449
|
+
def test_ordering_can_be_specifiedtest_ordering_can_be_specified190,5032
|
450
|
+
def test_ordering_can_be_specified_in_groupstest_ordering_can_be_specified_in_groups198,5228
|
451
|
+
|
452
|
+
test/test_partial_mock.rb,4817
|
424
453
|
class TestStubbing < Test::Unit::TestCaseTestStubbing16,372
|
425
454
|
class DogDog19,446
|
426
455
|
def barkbark20,458
|
427
456
|
def Dog.createcreate23,491
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
def
|
433
|
-
def
|
434
|
-
def
|
435
|
-
def
|
436
|
-
def
|
437
|
-
def
|
438
|
-
def
|
439
|
-
|
440
|
-
def
|
441
|
-
|
442
|
-
def
|
443
|
-
|
444
|
-
def
|
445
|
-
def
|
446
|
-
def
|
447
|
-
def
|
448
|
-
def
|
449
|
-
|
450
|
-
def
|
451
|
-
def
|
452
|
-
def
|
453
|
-
def
|
454
|
-
def
|
455
|
-
def
|
456
|
-
def
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
def
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
def
|
467
|
-
def
|
468
|
-
|
469
|
-
|
470
|
-
def
|
471
|
-
def
|
457
|
+
class DogPlus < DogDogPlus28,540
|
458
|
+
def should_receiveshould_receive29,562
|
459
|
+
def new_instancesnew_instances32,611
|
460
|
+
def by_defaultby_default35,656
|
461
|
+
def test_stub_command_add_behavior_to_arbitrary_objectstest_stub_command_add_behavior_to_arbitrary_objects40,712
|
462
|
+
def test_stub_command_can_configure_via_blocktest_stub_command_can_configure_via_block46,898
|
463
|
+
def test_stubbed_methods_can_take_blockstest_stubbed_methods_can_take_blocks54,1097
|
464
|
+
def test_multiple_stubs_on_the_same_object_reuse_the_same_partial_mocktest_multiple_stubs_on_the_same_object_reuse_the_same_partial_mock61,1324
|
465
|
+
def test_multiple_methods_can_be_stubbedtest_multiple_methods_can_be_stubbed66,1473
|
466
|
+
def test_original_behavior_can_be_restoredtest_original_behavior_can_be_restored74,1727
|
467
|
+
def test_original_missing_behavior_can_be_restoredtest_original_missing_behavior_can_be_restored84,2064
|
468
|
+
def test_multiple_stubs_on_single_method_can_be_restored_missing_methodtest_multiple_stubs_on_single_method_can_be_restored_missing_method93,2343
|
469
|
+
def test_original_behavior_is_restored_when_multiple_methods_are_mockedtest_original_behavior_is_restored_when_multiple_methods_are_mocked104,2754
|
470
|
+
def test_original_behavior_is_restored_on_class_objectstest_original_behavior_is_restored_on_class_objects113,3083
|
471
|
+
def test_original_behavior_is_restored_on_singleton_methodstest_original_behavior_is_restored_on_singleton_methods120,3334
|
472
|
+
def obj.hi() :hello endhi122,3417
|
473
|
+
def test_original_behavior_is_restored_on_singleton_methods_with_multiple_stubstest_original_behavior_is_restored_on_singleton_methods_with_multiple_stubs130,3613
|
474
|
+
def obj.hi(n) "hello#{n}" endhi132,3716
|
475
|
+
def test_original_behavior_is_restored_on_nonsingleton_methods_with_multiple_stubstest_original_behavior_is_restored_on_nonsingleton_methods_with_multiple_stubs142,4037
|
476
|
+
def test_stubbing_file_shouldnt_break_writingtest_stubbing_file_shouldnt_break_writing158,4531
|
477
|
+
def test_original_behavior_is_restored_even_when_errorstest_original_behavior_is_restored_even_when_errors174,4970
|
478
|
+
def m.flexmock_verify() endflexmock_verify182,5289
|
479
|
+
def test_not_calling_stubbed_method_is_an_errortest_not_calling_stubbed_method_is_an_error185,5328
|
480
|
+
def test_mock_is_verified_when_the_stub_is_verifiedtest_mock_is_verified_when_the_stub_is_verified194,5557
|
481
|
+
def test_stub_can_have_explicit_nametest_stub_can_have_explicit_name203,5827
|
482
|
+
def test_unamed_stub_will_use_default_naming_conventiontest_unamed_stub_will_use_default_naming_convention209,6006
|
483
|
+
def test_partials_can_be_defined_in_a_blocktest_partials_can_be_defined_in_a_block215,6202
|
484
|
+
def test_partials_defining_block_return_real_obj_not_proxytest_partials_defining_block_return_real_obj_not_proxy223,6389
|
485
|
+
def test_partial_mocks_always_return_domain_objecttest_partial_mocks_always_return_domain_object230,6583
|
486
|
+
def test_domain_objects_do_not_have_mock_methodstest_domain_objects_do_not_have_mock_methods241,6863
|
487
|
+
def test_partial_mocks_have_mock_methodstest_partial_mocks_have_mock_methods248,7055
|
488
|
+
def test_partial_mocks_do_not_have_mock_methods_after_teardowntest_partial_mocks_do_not_have_mock_methods_after_teardown256,7251
|
489
|
+
def test_partial_mocks_with_mock_method_singleton_colision_have_original_defs_restoredtest_partial_mocks_with_mock_method_singleton_colision_have_original_defs_restored265,7501
|
490
|
+
def dog.mock() :original endmock267,7608
|
491
|
+
class MockColisionMockColision273,7729
|
492
|
+
def mockmock274,7750
|
493
|
+
def test_partial_mocks_with_mock_method_non_singleton_colision_have_original_defs_restoredtest_partial_mocks_with_mock_method_non_singleton_colision_have_original_defs_restored279,7794
|
494
|
+
def test_safe_partial_mocks_do_not_support_mock_methodstest_safe_partial_mocks_do_not_support_mock_methods286,7998
|
495
|
+
def test_safe_partial_mocks_require_blocktest_safe_partial_mocks_require_block294,8226
|
496
|
+
def test_safe_partial_mocks_are_actually_mockedtest_safe_partial_mocks_are_actually_mocked299,8364
|
497
|
+
def test_should_receive_does_not_override_preexisting_deftest_should_receive_does_not_override_preexisting_def304,8534
|
498
|
+
class LiarLiar311,8787
|
499
|
+
def respond_to?(method_name)respond_to?312,8800
|
500
|
+
def test_liar_actually_liestest_liar_actually_lies322,8969
|
501
|
+
def test_partial_mock_where_respond_to_is_true_yet_method_is_not_theretest_partial_mock_where_respond_to_is_true_yet_method_is_not_there328,9121
|
502
|
+
class ValueObjectValueObject339,9550
|
503
|
+
def initialize(val)initialize342,9592
|
504
|
+
def ==(other)==346,9642
|
505
|
+
def test_partial_mocks_in_the_presense_of_equal_definitiontest_partial_mocks_in_the_presense_of_equal_definition351,9699
|
506
|
+
|
507
|
+
test/test_rails_view_stub.rb,931
|
508
|
+
module ViewTestsViewTests6,80
|
509
|
+
def test_view_mocks_as_stubtest_view_mocks_as_stub7,97
|
510
|
+
def test_fails_if_no_rendertest_fails_if_no_render12,191
|
511
|
+
def test_view_mocks_with_expectationtest_view_mocks_with_expectation19,335
|
512
|
+
def test_view_mocks_with_expectation_fails_with_different_templatetest_view_mocks_with_expectation_fails_with_different_template24,439
|
513
|
+
def test_view_mocks_with_expectation_wand_multiple_templatestest_view_mocks_with_expectation_wand_multiple_templates32,658
|
514
|
+
def pretend_to_be_rails_version(version)pretend_to_be_rails_version39,835
|
515
|
+
class TestRailsViewStubForVersionsUpTo_1_2_4 < Test::Unit::TestCaseTestRailsViewStubForVersionsUpTo_1_2_445,1030
|
516
|
+
def setupsetup49,1148
|
517
|
+
def render(*names)render56,1377
|
518
|
+
class TestRailsViewStubForVersionsAfter_1_2_4 < Test::Unit::TestCaseTestRailsViewStubForVersionsAfter_1_2_470,1655
|
519
|
+
def setupsetup74,1774
|
520
|
+
def render(*names)render82,2047
|
472
521
|
|
473
522
|
test/test_record_mode.rb,1339
|
474
523
|
class TestRecordMode < Test::Unit::TestCaseTestRecordMode16,390
|
475
524
|
def test_recording_mode_workstest_recording_mode_works20,505
|
476
525
|
def test_arguments_are_passed_to_recording_mode_blocktest_arguments_are_passed_to_recording_mode_block28,687
|
477
526
|
def test_recording_mode_handles_multiple_returnstest_recording_mode_handles_multiple_returns39,962
|
478
|
-
def test_recording_mode_does_not_specify_ordertest_recording_mode_does_not_specify_order
|
479
|
-
def test_recording_mode_gets_block_args_tootest_recording_mode_gets_block_args_too
|
480
|
-
def test_recording_mode_should_validate_args_with_equalstest_recording_mode_should_validate_args_with_equals
|
481
|
-
def test_recording_mode_should_allow_arg_contraint_validationtest_recording_mode_should_allow_arg_contraint_validation
|
482
|
-
def test_recording_mode_should_handle_multiplicity_contraintstest_recording_mode_should_handle_multiplicity_contraints
|
483
|
-
def test_strict_record_mode_requires_exact_argument_matchestest_strict_record_mode_requires_exact_argument_matches
|
484
|
-
def test_strict_record_mode_requires_exact_orderingtest_strict_record_mode_requires_exact_ordering
|
485
|
-
def test_strict_record_mode_requires_oncetest_strict_record_mode_requires_once
|
486
|
-
def test_strict_record_mode_can_not_failtest_strict_record_mode_can_not_fail
|
487
|
-
|
488
|
-
test/test_samples.rb,
|
527
|
+
def test_recording_mode_does_not_specify_ordertest_recording_mode_does_not_specify_order53,1386
|
528
|
+
def test_recording_mode_gets_block_args_tootest_recording_mode_gets_block_args_too64,1632
|
529
|
+
def test_recording_mode_should_validate_args_with_equalstest_recording_mode_should_validate_args_with_equals76,1914
|
530
|
+
def test_recording_mode_should_allow_arg_contraint_validationtest_recording_mode_should_allow_arg_contraint_validation87,2149
|
531
|
+
def test_recording_mode_should_handle_multiplicity_contraintstest_recording_mode_should_handle_multiplicity_contraints98,2390
|
532
|
+
def test_strict_record_mode_requires_exact_argument_matchestest_strict_record_mode_requires_exact_argument_matches110,2657
|
533
|
+
def test_strict_record_mode_requires_exact_orderingtest_strict_record_mode_requires_exact_ordering122,2937
|
534
|
+
def test_strict_record_mode_requires_oncetest_strict_record_mode_requires_once136,3242
|
535
|
+
def test_strict_record_mode_can_not_failtest_strict_record_mode_can_not_fail149,3517
|
536
|
+
|
537
|
+
test/test_samples.rb,2164
|
489
538
|
class TestSamples < Test::Unit::TestCaseTestSamples17,378
|
490
539
|
def test_file_iotest_file_io25,748
|
491
540
|
def count_lines(file)count_lines33,999
|
541
|
+
class TestUndefined < Test::Unit::TestCaseTestUndefined43,1092
|
542
|
+
def test_undefined_valuestest_undefined_values46,1165
|
543
|
+
class TestSimple < Test::Unit::TestCaseTestSimple55,1351
|
544
|
+
def test_simple_mocktest_simple_mock58,1421
|
545
|
+
class TestDog < Test::Unit::TestCaseTestDog65,1556
|
546
|
+
def test_dog_wagstest_dog_wags68,1625
|
547
|
+
class WooferWoofer74,1736
|
548
|
+
class DogDog77,1754
|
549
|
+
def initializeinitialize78,1764
|
550
|
+
def barkbark81,1812
|
551
|
+
def wagwag84,1846
|
552
|
+
class TestDogBarking < Test::Unit::TestCaseTestDogBarking89,1878
|
553
|
+
def setupsetup94,2043
|
554
|
+
def test_dogtest_dog99,2118
|
555
|
+
class TestDogBarkingWithNewInstances < Test::Unit::TestCaseTestDogBarkingWithNewInstances105,2249
|
556
|
+
def setupsetup110,2415
|
557
|
+
def test_dogtest_dog114,2502
|
558
|
+
class TestDefaults < Test::Unit::TestCaseTestDefaults120,2636
|
559
|
+
def setupsetup123,2708
|
560
|
+
def test_something_where_bark_must_be_called_oncetest_something_where_bark_must_be_called_once128,2837
|
561
|
+
class TestDemeter < Test::Unit::TestCaseTestDemeter136,3040
|
562
|
+
def test_manual_mockingtest_manual_mocking138,3110
|
563
|
+
def test_demetertest_demeter151,3544
|
564
|
+
class TestDb < Test::Unit::TestCaseTestDb161,3759
|
565
|
+
def test_dbtest_db164,3825
|
566
|
+
class TestDb < Test::Unit::TestCaseTestDb175,4030
|
567
|
+
def test_query_and_updatetest_query_and_update178,4096
|
568
|
+
def test_ordered_queriestest_ordered_queries189,4383
|
569
|
+
def test_ordered_queries_in_record_modetest_ordered_queries_in_record_mode207,4923
|
570
|
+
def known_good_way_to_build_xml(builder)known_good_way_to_build_xml224,5400
|
571
|
+
def new_way_to_build_xml(builder)new_way_to_build_xml228,5467
|
572
|
+
def test_build_xmltest_build_xml232,5551
|
573
|
+
class TestMoreSamples < Test::Unit::TestCaseTestMoreSamples243,5813
|
574
|
+
def test_multiple_getstest_multiple_gets246,5888
|
575
|
+
def test_an_important_messagetest_an_important_message255,6133
|
576
|
+
class QuoteServiceQuoteService264,6394
|
577
|
+
class PortfolioPortfolio267,6422
|
578
|
+
def initializeinitialize268,6440
|
579
|
+
def valuevalue271,6507
|
580
|
+
def test_portfolio_valuetest_portfolio_value276,6563
|
492
581
|
|
493
582
|
test/test_should_ignore_missing.rb,1173
|
494
583
|
class TestShouldIgnoreMissing < Test::Unit::TestCaseTestShouldIgnoreMissing16,375
|
@@ -504,7 +593,7 @@ class TestShouldIgnoreMissing < Test::Unit::TestCaseTestShouldIgnoreMissing16,
|
|
504
593
|
def test_not_calling_method_proc_will_fail_count_constraintstest_not_calling_method_proc_will_fail_count_constraints66,1693
|
505
594
|
def test_method_returns_do_nothing_proc_for_missing_methodstest_method_returns_do_nothing_proc_for_missing_methods75,1965
|
506
595
|
|
507
|
-
test/test_should_receive.rb,
|
596
|
+
test/test_should_receive.rb,10493
|
508
597
|
def mock_top_level_functionmock_top_level_function16,375
|
509
598
|
module KernelKernel20,416
|
510
599
|
def mock_kernel_functionmock_kernel_function21,430
|
@@ -604,15 +693,18 @@ class TestFlexMockShoulds < Test::Unit::TestCaseTestFlexMockShoulds26,477
|
|
604
693
|
def test_default_expectations_are_overridden_by_later_expectationstest_default_expectations_are_overridden_by_later_expectations910,23315
|
605
694
|
def test_ordered_default_expectations_can_be_specifiedtest_ordered_default_expectations_can_be_specified918,23543
|
606
695
|
def test_ordered_default_expectations_can_be_overriddentest_ordered_default_expectations_can_be_overridden926,23794
|
607
|
-
def
|
608
|
-
def
|
609
|
-
def
|
610
|
-
def
|
611
|
-
def
|
612
|
-
|
613
|
-
def
|
614
|
-
|
615
|
-
|
696
|
+
def test_by_default_works_at_mock_leveltest_by_default_works_at_mock_level938,24065
|
697
|
+
def test_by_default_at_mock_level_does_nothing_with_no_expectationstest_by_default_at_mock_level_does_nothing_with_no_expectations949,24340
|
698
|
+
def test_partial_mocks_can_have_default_expectationstest_partial_mocks_can_have_default_expectations955,24485
|
699
|
+
def test_partial_mocks_can_have_default_expectations_overriddentest_partial_mocks_can_have_default_expectations_overridden961,24666
|
700
|
+
def test_wicked_and_evil_tricks_with_by_default_are_thwartedtest_wicked_and_evil_tricks_with_by_default_are_thwarted968,24914
|
701
|
+
def test_mocks_can_handle_multi_parameter_respond_tostest_mocks_can_handle_multi_parameter_respond_tos980,25319
|
702
|
+
def test_can_mock_operatorstest_can_mock_operators991,25666
|
703
|
+
def assert_operator(op, &block)assert_operator1020,26681
|
704
|
+
class TestFlexMockShouldsWithInclude < Test::Unit::TestCaseTestFlexMockShouldsWithInclude1028,26835
|
705
|
+
def test_include_enables_unqualified_arg_type_referencestest_include_enables_unqualified_arg_type_references1030,26929
|
706
|
+
class TestFlexMockArgTypesDontLeak < Test::Unit::TestCaseTestFlexMockArgTypesDontLeak1038,27093
|
707
|
+
def test_unqualified_arg_type_references_are_undefined_by_defaulttest_unqualified_arg_type_references_are_undefined_by_default1039,27151
|
616
708
|
|
617
709
|
test/test_tu_integration.rb,1570
|
618
710
|
class TestTuIntegrationFlexMockMethod < Test::Unit::TestCaseTestTuIntegrationFlexMockMethod15,352
|
@@ -649,8 +741,6 @@ class UndefinedTest < Test::Unit::TestCaseUndefinedTest15,352
|
|
649
741
|
def assert_undefined(obj)assert_undefined81,2012
|
650
742
|
def undefinedundefined85,2075
|
651
743
|
|
652
|
-
test/rspec_integration/integration_spec.rb,0
|
653
|
-
|
654
744
|
test/test_unit_integration/test_auto_test_unit.rb,263
|
655
745
|
class TestFlexmockTestUnit < Test::Unit::TestCaseTestFlexmockTestUnit17,387
|
656
746
|
def teardownteardown18,437
|
@@ -1,10 +1,10 @@
|
|
1
|
-
= FlexMock 0.
|
1
|
+
= FlexMock 0.8.0 Released
|
2
2
|
|
3
3
|
FlexMock is a flexible mocking library for use in unit testing and
|
4
4
|
behavior specification in Ruby. It is a minor release that contains
|
5
5
|
some new funtionality.
|
6
6
|
|
7
|
-
== New Features
|
7
|
+
== New Features in 0.8.0
|
8
8
|
|
9
9
|
* When should_ignore_missing is specified, the mock will return an
|
10
10
|
undefined object for any method calls that are ignored.
|
data/lib/flexmock/expectation.rb
CHANGED
@@ -69,7 +69,7 @@ class FlexMock
|
|
69
69
|
def return_value(args)
|
70
70
|
case @return_queue.size
|
71
71
|
when 0
|
72
|
-
block = lambda { @return_value }
|
72
|
+
block = lambda { |*args| @return_value }
|
73
73
|
when 1
|
74
74
|
block = @return_queue.first
|
75
75
|
else
|
@@ -85,7 +85,7 @@ class FlexMock
|
|
85
85
|
unless @yield_queue.empty?
|
86
86
|
block = args.last
|
87
87
|
values = (@yield_queue.size == 1) ? @yield_queue.first : @yield_queue.shift
|
88
|
-
if block.respond_to?(:call)
|
88
|
+
if block && block.respond_to?(:call)
|
89
89
|
@return_value = block.call(*values)
|
90
90
|
else
|
91
91
|
fail MockError, "No Block given to mock with 'and_yield' expectation"
|
@@ -190,7 +190,7 @@ class FlexMock
|
|
190
190
|
@return_queue << block
|
191
191
|
else
|
192
192
|
args.each do |arg|
|
193
|
-
@return_queue << lambda { arg }
|
193
|
+
@return_queue << lambda { |*a| arg }
|
194
194
|
end
|
195
195
|
end
|
196
196
|
self
|
@@ -213,6 +213,9 @@ class FlexMock
|
|
213
213
|
:new_record? => false,
|
214
214
|
:class => model_class,
|
215
215
|
:errors => container.flexmock("errors", :count => 0))
|
216
|
+
# HACK: Ruby 1.9 needs the following lambda so that model_class
|
217
|
+
# is correctly bound below.
|
218
|
+
lambda { }
|
216
219
|
mock.should_receive(:is_a?).with(any).and_return { |other|
|
217
220
|
other == model_class
|
218
221
|
}
|
@@ -104,22 +104,27 @@ class FlexMock
|
|
104
104
|
# new_instances is a short cut method for overriding the behavior of any
|
105
105
|
# new instances created via a mocked class object.
|
106
106
|
#
|
107
|
-
# By default, new_instances will mock the behaviour of the :new
|
108
|
-
#
|
109
|
-
#
|
107
|
+
# By default, new_instances will mock the behaviour of the :new
|
108
|
+
# method. If you wish to mock a different set of class methods,
|
109
|
+
# just pass a list of symbols to as arguments. (previous versions
|
110
|
+
# also mocked :allocate by default. If you need :allocate to be
|
111
|
+
# mocked, just request it explicitly).
|
110
112
|
#
|
111
|
-
# For example, to stub only objects created by :make (and not
|
112
|
-
#
|
113
|
+
# For example, to stub only objects created by :make (and not
|
114
|
+
# :new), use:
|
113
115
|
#
|
114
116
|
# flexmock(ClassName).new_instances(:make).should_receive(...)
|
115
117
|
#
|
116
118
|
def new_instances(*allocators, &block)
|
117
119
|
fail ArgumentError, "new_instances requires a Class to stub" unless Class === @obj
|
118
|
-
allocators = [:new
|
120
|
+
allocators = [:new] if allocators.empty?
|
119
121
|
result = ExpectationRecorder.new
|
120
|
-
allocators.each do |
|
121
|
-
|
122
|
-
|
122
|
+
allocators.each do |allocate_method|
|
123
|
+
# HACK: Without the following lambda, Ruby 1.9 will not bind
|
124
|
+
# the allocate_method parameter correctly.
|
125
|
+
lambda { }
|
126
|
+
self.should_receive(allocate_method).and_return { |*args|
|
127
|
+
new_obj = invoke_original(allocate_method, args)
|
123
128
|
mock = flexmock_container.flexmock(new_obj)
|
124
129
|
block.call(mock) if block_given?
|
125
130
|
result.apply(mock)
|
@@ -3,18 +3,45 @@ require 'flexmock'
|
|
3
3
|
class FlexMock
|
4
4
|
module MockContainer
|
5
5
|
|
6
|
+
def rails_version
|
7
|
+
Rails::VERSION::STRING
|
8
|
+
end
|
9
|
+
|
6
10
|
# Declare that the Rails controller under test should render the
|
7
11
|
# named view. If a view template name is given, it will be an
|
8
12
|
# error if the named view is not rendered during the execution of
|
9
13
|
# the contoller action. If no template name is given, then the
|
10
14
|
# any view may be rendered. If no view is actually rendered, then
|
11
|
-
#
|
15
|
+
# an assertion failure will occur.
|
16
|
+
#
|
17
|
+
# def test_my_action_does_what_it_should
|
18
|
+
# should_render_view 'show'
|
19
|
+
#
|
20
|
+
# get :show, :id => 1
|
21
|
+
#
|
22
|
+
# assert_response :success
|
23
|
+
# end
|
24
|
+
#
|
12
25
|
def should_render_view(template_name=nil)
|
26
|
+
if rails_version <= '1.2.4'
|
27
|
+
should_render_view_prior_version_124(template_name)
|
28
|
+
elsif rails_version <= '2.0.0'
|
29
|
+
should_render_view_after_version_124(template_name)
|
30
|
+
else
|
31
|
+
should_render_view_after_version_202(template_name)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
# This version of should_render_view will work for Rails 1.2.4
|
38
|
+
# (and prehaps some number of prior versions).
|
39
|
+
def should_render_view_prior_version_124(template_name) # :nodoc:
|
13
40
|
view = flexmock("MockView")
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
41
|
+
view.should_receive(
|
42
|
+
:assigns => {},
|
43
|
+
:render_file => true,
|
44
|
+
:first_render => "dummy_template"
|
18
45
|
)
|
19
46
|
if template_name
|
20
47
|
view.should_receive(:file_exists?).with(/#{template_name}$/).once.
|
@@ -26,5 +53,49 @@ class FlexMock
|
|
26
53
|
flexmock(@controller.class).should_receive(:view_class).once.
|
27
54
|
and_return(view_class)
|
28
55
|
end
|
56
|
+
|
57
|
+
# This version of should_render_view will work with versions of
|
58
|
+
# Rails after Version 1.2.4.
|
59
|
+
def should_render_view_after_version_124(template_name)
|
60
|
+
view = flexmock("MockView")
|
61
|
+
view.should_receive(
|
62
|
+
:assigns => {},
|
63
|
+
:render_file => true,
|
64
|
+
:template_format => :dummy_format,
|
65
|
+
:view_paths => :dummy_view_paths,
|
66
|
+
:pick_template_extension => :dummy_extension
|
67
|
+
)
|
68
|
+
if template_name
|
69
|
+
view.should_receive(:file_exists?).with(/#{template_name}$/).once.
|
70
|
+
and_return(true)
|
71
|
+
end
|
72
|
+
view.should_receive(:file_exists?).with(any).and_return(true)
|
73
|
+
|
74
|
+
# The number of times this is called changes from version 1.2.6
|
75
|
+
# to 2.0. The important thing is that it is checked at least once.
|
76
|
+
flexmock(@response).should_receive(:template).and_return(view).
|
77
|
+
at_least.once
|
78
|
+
end
|
79
|
+
|
80
|
+
# This version of should_render_view will work with versions of
|
81
|
+
# Rails at Version 2.0.2 and after
|
82
|
+
def should_render_view_after_version_202(template_name)
|
83
|
+
viewmock = flexmock("ViewMock")
|
84
|
+
viewmock.should_receive(
|
85
|
+
:assigns => {},
|
86
|
+
:pick_template_extension => ".html",
|
87
|
+
:template_format =>nil,
|
88
|
+
:view_paths => nil,
|
89
|
+
:file_exists? => true,
|
90
|
+
:first_render => "")
|
91
|
+
if template_name
|
92
|
+
viewmock.should_receive(:render_file).with(/\/#{template_name}$/, any, any).
|
93
|
+
and_return(nil).once
|
94
|
+
else
|
95
|
+
viewmock.should_receive(:render_file).and_return(nil)
|
96
|
+
end
|
97
|
+
flexmock(ActionView::Base).should_receive(:new).and_return(viewmock)
|
98
|
+
end
|
99
|
+
|
29
100
|
end
|
30
101
|
end
|
@@ -52,7 +52,7 @@ class TestFlexMock < Test::Unit::TestCase
|
|
52
52
|
end
|
53
53
|
|
54
54
|
def test_handle_missing_method
|
55
|
-
expected_error = (
|
55
|
+
expected_error = (RUBY_VERSION >= "1.8.0") ? NoMethodError : NameError
|
56
56
|
ex = assert_raises(expected_error) {
|
57
57
|
@mock.not_defined
|
58
58
|
}
|
data/test/test_flexmodel.rb
CHANGED
data/test/test_new_instances.rb
CHANGED
@@ -111,11 +111,19 @@ class TestNewInstances < Test::Unit::TestCase
|
|
111
111
|
assert_match(/new_instances/, ex.message)
|
112
112
|
end
|
113
113
|
|
114
|
-
def
|
114
|
+
def test_does_not_by_default_stub_objects_created_with_allocate
|
115
115
|
flexstub(Dog).new_instances do |obj|
|
116
116
|
obj.should_receive(:bark).and_return(:whimper)
|
117
117
|
end
|
118
118
|
m = Dog.allocate
|
119
|
+
assert_equal :woof, m.bark
|
120
|
+
end
|
121
|
+
|
122
|
+
def test_can_explicitly_stub_objects_created_with_allocate
|
123
|
+
flexstub(Dog).new_instances(:allocate) do |obj|
|
124
|
+
obj.should_receive(:bark).and_return(:whimper)
|
125
|
+
end
|
126
|
+
m = Dog.allocate
|
119
127
|
assert_equal :whimper, m.bark
|
120
128
|
end
|
121
129
|
|
@@ -142,15 +150,6 @@ class TestNewInstances < Test::Unit::TestCase
|
|
142
150
|
assert_equal 1, counter
|
143
151
|
end
|
144
152
|
|
145
|
-
def test_stubbing_new_and_allocate_doesnt_double_stub_objects_on_allocate
|
146
|
-
counter = 0
|
147
|
-
flexstub(Dog).new_instances do |obj|
|
148
|
-
counter += 1
|
149
|
-
end
|
150
|
-
Dog.allocate
|
151
|
-
assert_equal 1, counter
|
152
|
-
end
|
153
|
-
|
154
153
|
# Current behavior does not install stubs into the block passed to new.
|
155
154
|
# This is rather difficult to achieve, although it would be nice. For the
|
156
155
|
# moment, we assure that they are not stubbed, but I am willing to change
|
@@ -3,15 +3,7 @@
|
|
3
3
|
require 'test/unit'
|
4
4
|
require 'flexmock/rails/view_mocking'
|
5
5
|
|
6
|
-
|
7
|
-
class TestRailsViewStub < Test::Unit::TestCase
|
8
|
-
include FlexMock::TestCase
|
9
|
-
|
10
|
-
def setup
|
11
|
-
@controller_class = flexmock("controller class")
|
12
|
-
@controller = flexmock("controller", :class => @controller_class)
|
13
|
-
end
|
14
|
-
|
6
|
+
module ViewTests
|
15
7
|
def test_view_mocks_as_stub
|
16
8
|
should_render_view
|
17
9
|
render "controller/new.rthml"
|
@@ -44,6 +36,23 @@ class TestRailsViewStub < Test::Unit::TestCase
|
|
44
36
|
|
45
37
|
private
|
46
38
|
|
39
|
+
def pretend_to_be_rails_version(version)
|
40
|
+
flexmock(self).should_receive(:rails_version).and_return(version)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
######################################################################
|
45
|
+
class TestRailsViewStubForVersionsUpTo_1_2_4 < Test::Unit::TestCase
|
46
|
+
include FlexMock::TestCase
|
47
|
+
include ViewTests
|
48
|
+
|
49
|
+
def setup
|
50
|
+
@controller_class = flexmock("controller class")
|
51
|
+
@controller = flexmock("controller", :class => @controller_class)
|
52
|
+
pretend_to_be_rails_version("1.2.4")
|
53
|
+
end
|
54
|
+
|
55
|
+
# Simulate Rails rendering in version 1.2.4
|
47
56
|
def render(*names)
|
48
57
|
vc = @controller.class.view_class
|
49
58
|
v = vc.new
|
@@ -54,4 +63,32 @@ class TestRailsViewStub < Test::Unit::TestCase
|
|
54
63
|
v.file_exists?(name)
|
55
64
|
end
|
56
65
|
end
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
######################################################################
|
70
|
+
class TestRailsViewStubForVersionsAfter_1_2_4 < Test::Unit::TestCase
|
71
|
+
include FlexMock::TestCase
|
72
|
+
include ViewTests
|
73
|
+
|
74
|
+
def setup
|
75
|
+
@controller_class = flexmock("controller class")
|
76
|
+
@controller = flexmock("controller", :class => @controller_class)
|
77
|
+
@response = flexmock("Response")
|
78
|
+
pretend_to_be_rails_version("2.0")
|
79
|
+
end
|
80
|
+
|
81
|
+
# Simulate Rails rendering after Rails version 1.2.4
|
82
|
+
def render(*names)
|
83
|
+
v = @response.template
|
84
|
+
v.assigns(:x => :y)
|
85
|
+
v.render_file
|
86
|
+
v.template_format
|
87
|
+
v.view_paths
|
88
|
+
v.pick_template_extension
|
89
|
+
names.each do |name|
|
90
|
+
v.file_exists?(name)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
57
94
|
end
|
data/test/test_record_mode.rb
CHANGED
@@ -40,6 +40,9 @@ class TestRecordMode < Test::Unit::TestCase
|
|
40
40
|
FlexMock.use("mock") do |mock|
|
41
41
|
mock.should_expect do |r|
|
42
42
|
answers = [1, 2]
|
43
|
+
# HACK: The following lambda is needed in Ruby 1.9 to cause
|
44
|
+
# the answers to be properly bound in the following block.
|
45
|
+
lambda { }
|
43
46
|
r.f { answers.shift }
|
44
47
|
end
|
45
48
|
assert_equal 1, mock.f
|
metadata
CHANGED
@@ -1,39 +1,47 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.4
|
3
|
-
specification_version: 1
|
4
2
|
name: flexmock
|
5
3
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.8.
|
7
|
-
date: 2007-11-08 00:00:00 -05:00
|
8
|
-
summary: Simple and Flexible Mock Objects for Testing
|
9
|
-
require_paths:
|
10
|
-
- lib
|
11
|
-
email: jim@weirichhouse.org
|
12
|
-
homepage: http://onestepback.org/software/flexmock
|
13
|
-
rubyforge_project:
|
14
|
-
description: FlexMock is a extremely simple mock object class compatible with the Test::Unit framework. Although the FlexMock's interface is simple, it is very flexible.
|
15
|
-
autorequire:
|
16
|
-
default_executable:
|
17
|
-
bindir: bin
|
18
|
-
has_rdoc: true
|
19
|
-
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
-
requirements:
|
21
|
-
- - ">"
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 0.0.0
|
24
|
-
version:
|
4
|
+
version: 0.8.1
|
25
5
|
platform: ruby
|
26
|
-
signing_key:
|
27
|
-
cert_chain:
|
28
|
-
post_install_message:
|
29
6
|
authors:
|
30
7
|
- Jim Weirich
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2008-05-21 00:00:00 -07:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: FlexMock is a extremely simple mock object class compatible with the Test::Unit framework. Although the FlexMock's interface is simple, it is very flexible.
|
17
|
+
email: jim@weirichhouse.org
|
18
|
+
executables: []
|
19
|
+
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files:
|
23
|
+
- README
|
24
|
+
- CHANGES
|
25
|
+
- doc/GoogleExample.rdoc
|
26
|
+
- doc/releases/flexmock-0.4.0.rdoc
|
27
|
+
- doc/releases/flexmock-0.4.1.rdoc
|
28
|
+
- doc/releases/flexmock-0.4.2.rdoc
|
29
|
+
- doc/releases/flexmock-0.4.3.rdoc
|
30
|
+
- doc/releases/flexmock-0.5.0.rdoc
|
31
|
+
- doc/releases/flexmock-0.5.1.rdoc
|
32
|
+
- doc/releases/flexmock-0.6.0.rdoc
|
33
|
+
- doc/releases/flexmock-0.6.1.rdoc
|
34
|
+
- doc/releases/flexmock-0.6.2.rdoc
|
35
|
+
- doc/releases/flexmock-0.6.3.rdoc
|
36
|
+
- doc/releases/flexmock-0.6.4.rdoc
|
37
|
+
- doc/releases/flexmock-0.7.0.rdoc
|
38
|
+
- doc/releases/flexmock-0.7.1.rdoc
|
39
|
+
- doc/releases/flexmock-0.8.0.rdoc
|
31
40
|
files:
|
32
41
|
- CHANGES
|
33
42
|
- Rakefile
|
34
43
|
- README
|
35
44
|
- TAGS
|
36
|
-
- lib/flexmock.rb
|
37
45
|
- lib/flexmock/argument_matchers.rb
|
38
46
|
- lib/flexmock/argument_types.rb
|
39
47
|
- lib/flexmock/base.rb
|
@@ -49,6 +57,7 @@ files:
|
|
49
57
|
- lib/flexmock/noop.rb
|
50
58
|
- lib/flexmock/ordering.rb
|
51
59
|
- lib/flexmock/partial_mock.rb
|
60
|
+
- lib/flexmock/rails/view_mocking.rb
|
52
61
|
- lib/flexmock/rails.rb
|
53
62
|
- lib/flexmock/recorder.rb
|
54
63
|
- lib/flexmock/rspec.rb
|
@@ -56,9 +65,10 @@ files:
|
|
56
65
|
- lib/flexmock/test_unit_integration.rb
|
57
66
|
- lib/flexmock/undefined.rb
|
58
67
|
- lib/flexmock/validators.rb
|
59
|
-
- lib/flexmock
|
68
|
+
- lib/flexmock.rb
|
60
69
|
- test/asserts.rb
|
61
70
|
- test/redirect_error.rb
|
71
|
+
- test/rspec_integration/integration_spec.rb
|
62
72
|
- test/test_aliasing.rb
|
63
73
|
- test/test_container_methods.rb
|
64
74
|
- test/test_default_framework_adapter.rb
|
@@ -77,7 +87,6 @@ files:
|
|
77
87
|
- test/test_should_receive.rb
|
78
88
|
- test/test_tu_integration.rb
|
79
89
|
- test/test_undefined.rb
|
80
|
-
- test/rspec_integration/integration_spec.rb
|
81
90
|
- test/test_unit_integration/test_auto_test_unit.rb
|
82
91
|
- flexmock.blurb
|
83
92
|
- install.rb
|
@@ -96,37 +105,35 @@ files:
|
|
96
105
|
- doc/releases/flexmock-0.7.0.rdoc
|
97
106
|
- doc/releases/flexmock-0.7.1.rdoc
|
98
107
|
- doc/releases/flexmock-0.8.0.rdoc
|
99
|
-
|
100
|
-
|
108
|
+
has_rdoc: true
|
109
|
+
homepage: http://onestepback.org/software/flexmock
|
110
|
+
post_install_message:
|
101
111
|
rdoc_options:
|
102
112
|
- --title
|
103
113
|
- Flex Mock
|
104
114
|
- --main
|
105
115
|
- README
|
106
116
|
- --line-numbers
|
107
|
-
|
108
|
-
-
|
109
|
-
|
110
|
-
|
111
|
-
-
|
112
|
-
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
-
|
118
|
-
-
|
119
|
-
|
120
|
-
|
121
|
-
- doc/releases/flexmock-0.6.4.rdoc
|
122
|
-
- doc/releases/flexmock-0.7.0.rdoc
|
123
|
-
- doc/releases/flexmock-0.7.1.rdoc
|
124
|
-
- doc/releases/flexmock-0.8.0.rdoc
|
125
|
-
executables: []
|
126
|
-
|
127
|
-
extensions: []
|
128
|
-
|
117
|
+
require_paths:
|
118
|
+
- lib
|
119
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - ">="
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: "0"
|
124
|
+
version:
|
125
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
126
|
+
requirements:
|
127
|
+
- - ">="
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: "0"
|
130
|
+
version:
|
129
131
|
requirements: []
|
130
132
|
|
131
|
-
|
133
|
+
rubyforge_project:
|
134
|
+
rubygems_version: 1.0.1
|
135
|
+
signing_key:
|
136
|
+
specification_version: 2
|
137
|
+
summary: Simple and Flexible Mock Objects for Testing
|
138
|
+
test_files: []
|
132
139
|
|