flexmock 0.8.0 → 0.8.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
|