flexmock 0.5.1 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +10 -1
- data/README +390 -209
- data/Rakefile +31 -10
- data/doc/GoogleExample.rdoc +275 -0
- data/doc/releases/flexmock-0.6.0.rdoc +136 -0
- data/lib/flexmock.rb +3 -1160
- data/lib/flexmock/argument_matchers.rb +57 -0
- data/lib/flexmock/argument_types.rb +42 -0
- data/lib/flexmock/base.rb +22 -0
- data/lib/flexmock/composite.rb +10 -0
- data/lib/flexmock/core.rb +206 -0
- data/lib/flexmock/core_class_methods.rb +92 -0
- data/lib/flexmock/default_framework_adapter.rb +31 -0
- data/lib/flexmock/expectation.rb +334 -0
- data/lib/flexmock/expectation_director.rb +59 -0
- data/lib/flexmock/mock_container.rb +159 -0
- data/lib/flexmock/noop.rb +13 -0
- data/lib/flexmock/partial_mock.rb +226 -0
- data/lib/flexmock/recorder.rb +71 -0
- data/lib/flexmock/rspec.rb +34 -0
- data/lib/flexmock/test_unit.rb +32 -0
- data/lib/flexmock/test_unit_integration.rb +53 -0
- data/lib/flexmock/validators.rb +77 -0
- data/test/rspec_integration/integration_spec.rb +36 -0
- data/test/test_container_methods.rb +119 -0
- data/test/test_default_framework_adapter.rb +39 -0
- data/test/test_example.rb +1 -1
- data/test/test_extended_should_receive.rb +63 -0
- data/test/test_mock.rb +1 -1
- data/test/test_naming.rb +1 -1
- data/test/{test_any_instance.rb → test_new_instances.rb} +15 -8
- data/test/{test_stubbing.rb → test_partial_mock.rb} +44 -44
- data/test/test_record_mode.rb +1 -1
- data/test/test_samples.rb +6 -8
- data/test/test_should_receive.rb +7 -3
- data/test/test_tu_integration.rb +1 -1
- data/test/test_unit_integration/test_auto_test_unit.rb +34 -0
- metadata +30 -5
- data/test/test_class_interception.rb +0 -140
data/test/test_record_mode.rb
CHANGED
data/test/test_samples.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
#---
|
4
|
-
# Copyright 2006 by Jim Weirich (
|
4
|
+
# Copyright 2003, 2004, 2005, 2006, 2007 by Jim Weirich (jim@weirichhouse.org).
|
5
5
|
# All rights reserved.
|
6
6
|
|
7
7
|
# Permission is granted for use, copying, modification, distribution,
|
@@ -10,10 +10,12 @@
|
|
10
10
|
#+++
|
11
11
|
|
12
12
|
require 'test/unit'
|
13
|
+
require 'flexmock'
|
13
14
|
|
14
15
|
# Sample FlexMock Usage.
|
15
16
|
|
16
17
|
class TestSamples < Test::Unit::TestCase
|
18
|
+
include FlexMock::TestCase
|
17
19
|
|
18
20
|
# This is a basic example where we setup a mock object to mimic an
|
19
21
|
# IO object. We know that the +count_lines+ method uses gets, so we
|
@@ -21,10 +23,9 @@ class TestSamples < Test::Unit::TestCase
|
|
21
23
|
# elements of an array (just as the real +gets+ returns successive
|
22
24
|
# elements of a file.
|
23
25
|
def test_file_io
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
assert_equal 2, count_lines(file)
|
26
|
+
mock_file = flexmock("file")
|
27
|
+
mock_file.should_receive(:gets).and_return("line 1", "line 2", nil)
|
28
|
+
assert_equal 2, count_lines(mock_file)
|
28
29
|
end
|
29
30
|
|
30
31
|
# Count the number of lines in a file. Used in the test_file_io
|
@@ -36,8 +37,5 @@ class TestSamples < Test::Unit::TestCase
|
|
36
37
|
end
|
37
38
|
n
|
38
39
|
end
|
39
|
-
|
40
|
-
def test_x
|
41
|
-
end
|
42
40
|
end
|
43
41
|
|
data/test/test_should_receive.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
#---
|
4
|
-
# Copyright 2006 by Jim Weirich (
|
4
|
+
# Copyright 2003, 2004, 2005, 2006, 2007 by Jim Weirich (jim@weirichhouse.org).
|
5
5
|
# All rights reserved.
|
6
6
|
|
7
7
|
# Permission is granted for use, copying, modification, distribution,
|
@@ -588,11 +588,15 @@ class TestFlexMockShoulds < Test::Unit::TestCase
|
|
588
588
|
end
|
589
589
|
|
590
590
|
def test_expectation_formating
|
591
|
-
|
592
|
-
exp = m.should_receive(:f).with(1,"two", /^3$/).and_return(0).at_least.once
|
591
|
+
exp = FlexMock.new("m").should_receive(:f).with(1,"two", /^3$/).and_return(0).at_least.once
|
593
592
|
assert_equal 'f(1, "two", /^3$/)', exp.to_s
|
594
593
|
end
|
595
594
|
|
595
|
+
def test_multi_expectation_formatting
|
596
|
+
exp = FlexMock.new.should_receive(:f, :g).with(1)
|
597
|
+
assert_equal "[f(1), g(1)]", exp.to_s
|
598
|
+
end
|
599
|
+
|
596
600
|
def test_explicit_ordering_with_limits_allow_multiple_return_values
|
597
601
|
FlexMock.use('mock') do |m|
|
598
602
|
m.should_receive(:f).with(2).once.and_return { :first_time }
|
data/test/test_tu_integration.rb
CHANGED
@@ -0,0 +1,34 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
#---
|
4
|
+
# Copyright 2003, 2004, 2005, 2006, 2007 by Jim Weirich (jim@weirichhouse.org).
|
5
|
+
# All rights reserved.
|
6
|
+
|
7
|
+
# Permission is granted for use, copying, modification, distribution,
|
8
|
+
# and distribution of modified versions of this work as long as the
|
9
|
+
# above copyright notice is included.
|
10
|
+
#+++
|
11
|
+
|
12
|
+
require "test/unit"
|
13
|
+
|
14
|
+
require "flexmock/base"
|
15
|
+
require "flexmock/test_unit"
|
16
|
+
|
17
|
+
class TestFlexmockTestUnit < Test::Unit::TestCase
|
18
|
+
def teardown
|
19
|
+
super
|
20
|
+
end
|
21
|
+
|
22
|
+
# This test should pass.
|
23
|
+
def test_can_create_mocks
|
24
|
+
m = flexmock("mock")
|
25
|
+
m.should_receive(:hi).once
|
26
|
+
m.hi
|
27
|
+
end
|
28
|
+
|
29
|
+
# This test should fail during teardown.
|
30
|
+
def test_should_fail__mocks_are_auto_verified
|
31
|
+
m = flexmock("mock")
|
32
|
+
m.should_receive(:hi).once
|
33
|
+
end
|
34
|
+
end
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
|
|
3
3
|
specification_version: 1
|
4
4
|
name: flexmock
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.
|
7
|
-
date: 2007-04-
|
6
|
+
version: 0.6.0
|
7
|
+
date: 2007-04-14 00:00:00 -04:00
|
8
8
|
summary: Simple and Flexible Mock Objects for Testing
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -33,24 +33,47 @@ files:
|
|
33
33
|
- Rakefile
|
34
34
|
- README
|
35
35
|
- lib/flexmock.rb
|
36
|
-
-
|
37
|
-
-
|
36
|
+
- lib/flexmock/argument_matchers.rb
|
37
|
+
- lib/flexmock/argument_types.rb
|
38
|
+
- lib/flexmock/base.rb
|
39
|
+
- lib/flexmock/composite.rb
|
40
|
+
- lib/flexmock/core.rb
|
41
|
+
- lib/flexmock/core_class_methods.rb
|
42
|
+
- lib/flexmock/default_framework_adapter.rb
|
43
|
+
- lib/flexmock/expectation.rb
|
44
|
+
- lib/flexmock/expectation_director.rb
|
45
|
+
- lib/flexmock/mock_container.rb
|
46
|
+
- lib/flexmock/noop.rb
|
47
|
+
- lib/flexmock/partial_mock.rb
|
48
|
+
- lib/flexmock/recorder.rb
|
49
|
+
- lib/flexmock/rspec.rb
|
50
|
+
- lib/flexmock/test_unit.rb
|
51
|
+
- lib/flexmock/test_unit_integration.rb
|
52
|
+
- lib/flexmock/validators.rb
|
53
|
+
- test/test_container_methods.rb
|
54
|
+
- test/test_default_framework_adapter.rb
|
38
55
|
- test/test_example.rb
|
56
|
+
- test/test_extended_should_receive.rb
|
39
57
|
- test/test_mock.rb
|
40
58
|
- test/test_naming.rb
|
59
|
+
- test/test_new_instances.rb
|
60
|
+
- test/test_partial_mock.rb
|
41
61
|
- test/test_record_mode.rb
|
42
62
|
- test/test_samples.rb
|
43
63
|
- test/test_should_receive.rb
|
44
|
-
- test/test_stubbing.rb
|
45
64
|
- test/test_tu_integration.rb
|
65
|
+
- test/rspec_integration/integration_spec.rb
|
66
|
+
- test/test_unit_integration/test_auto_test_unit.rb
|
46
67
|
- flexmock.blurb
|
47
68
|
- install.rb
|
69
|
+
- doc/GoogleExample.rdoc
|
48
70
|
- doc/releases/flexmock-0.4.0.rdoc
|
49
71
|
- doc/releases/flexmock-0.4.1.rdoc
|
50
72
|
- doc/releases/flexmock-0.4.2.rdoc
|
51
73
|
- doc/releases/flexmock-0.4.3.rdoc
|
52
74
|
- doc/releases/flexmock-0.5.0.rdoc
|
53
75
|
- doc/releases/flexmock-0.5.1.rdoc
|
76
|
+
- doc/releases/flexmock-0.6.0.rdoc
|
54
77
|
test_files: []
|
55
78
|
|
56
79
|
rdoc_options:
|
@@ -62,12 +85,14 @@ rdoc_options:
|
|
62
85
|
extra_rdoc_files:
|
63
86
|
- README
|
64
87
|
- CHANGELOG
|
88
|
+
- doc/GoogleExample.rdoc
|
65
89
|
- doc/releases/flexmock-0.4.0.rdoc
|
66
90
|
- doc/releases/flexmock-0.4.1.rdoc
|
67
91
|
- doc/releases/flexmock-0.4.2.rdoc
|
68
92
|
- doc/releases/flexmock-0.4.3.rdoc
|
69
93
|
- doc/releases/flexmock-0.5.0.rdoc
|
70
94
|
- doc/releases/flexmock-0.5.1.rdoc
|
95
|
+
- doc/releases/flexmock-0.6.0.rdoc
|
71
96
|
executables: []
|
72
97
|
|
73
98
|
extensions: []
|
@@ -1,140 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
#---
|
4
|
-
# Copyright 2006 by Jim Weirich (jweirich@one.net).
|
5
|
-
# All rights reserved.
|
6
|
-
|
7
|
-
# Permission is granted for use, copying, modification, distribution,
|
8
|
-
# and distribution of modified versions of this work as long as the
|
9
|
-
# above copyright notice is included.
|
10
|
-
#+++
|
11
|
-
|
12
|
-
require 'test/unit'
|
13
|
-
require 'flexmock'
|
14
|
-
|
15
|
-
class Bark
|
16
|
-
def listen
|
17
|
-
:woof
|
18
|
-
end
|
19
|
-
def Bark.identify
|
20
|
-
:barking
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
class Meow
|
25
|
-
def listen
|
26
|
-
:meow
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
class Dog
|
31
|
-
def bark
|
32
|
-
Bark.new
|
33
|
-
end
|
34
|
-
def bark_id
|
35
|
-
Bark.identify
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
class TestClassInterception < Test::Unit::TestCase
|
40
|
-
include FlexMock::TestCase
|
41
|
-
|
42
|
-
def test_original_functionality
|
43
|
-
dog = Dog.new
|
44
|
-
assert_equal :woof, dog.bark.listen
|
45
|
-
end
|
46
|
-
|
47
|
-
def test_interception
|
48
|
-
interceptor = intercept(Bark).in(Dog).with(Meow)
|
49
|
-
assert_kind_of FlexMock::ClassProxy, Dog::Bark
|
50
|
-
assert_equal Meow, Dog::Bark.proxied_class
|
51
|
-
dog = Dog.new
|
52
|
-
assert_equal :meow, dog.bark.listen
|
53
|
-
ensure
|
54
|
-
interceptor.restore if interceptor
|
55
|
-
end
|
56
|
-
|
57
|
-
# Since interception leaves a proxy class behind, we want to make
|
58
|
-
# sure interception works twice on the same object. So we repeat
|
59
|
-
# this test in full. We don't know which tests will _actually_ run
|
60
|
-
# first, but it doesn't matter as long as it is done twice.
|
61
|
-
def test_interception_repeated
|
62
|
-
test_interception
|
63
|
-
end
|
64
|
-
|
65
|
-
def test_interception_with_strings
|
66
|
-
interceptor = intercept("Bark").in("Dog").with("Meow")
|
67
|
-
assert_equal :meow, Dog.new.bark.listen
|
68
|
-
ensure
|
69
|
-
interceptor.restore if interceptor
|
70
|
-
end
|
71
|
-
|
72
|
-
def test_interception_with_symbols
|
73
|
-
interceptor = intercept(:Bark).in(:Dog).with(:Meow)
|
74
|
-
assert_equal :meow, Dog.new.bark.listen
|
75
|
-
ensure
|
76
|
-
interceptor.restore if interceptor
|
77
|
-
end
|
78
|
-
|
79
|
-
def test_interception_with_mixed_identifiers
|
80
|
-
interceptor = intercept(:Bark).in("Dog").with(Meow)
|
81
|
-
assert_equal :meow, Dog.new.bark.listen
|
82
|
-
ensure
|
83
|
-
interceptor.restore if interceptor
|
84
|
-
end
|
85
|
-
|
86
|
-
def test_interception_proxy_forward_other_methods
|
87
|
-
d = Dog.new
|
88
|
-
assert_equal :barking, d.bark_id
|
89
|
-
|
90
|
-
interceptor = intercept(:Bark).in("Dog").with(Meow)
|
91
|
-
interceptor.restore
|
92
|
-
|
93
|
-
d = Dog.new
|
94
|
-
assert_equal :barking, d.bark_id
|
95
|
-
end
|
96
|
-
|
97
|
-
def test_interceptions_fails_with_bad_class_names
|
98
|
-
ex = assert_raises(FlexMock::BadInterceptionError) {
|
99
|
-
intercept("BADNAME").in("Dog").with("Meow")
|
100
|
-
}
|
101
|
-
assert_match(/intercepted/, ex.message)
|
102
|
-
assert_match(/BADNAME/, ex.message)
|
103
|
-
|
104
|
-
ex = assert_raises(FlexMock::BadInterceptionError) {
|
105
|
-
intercept(Bark).in("BADNAME").with("Meow")
|
106
|
-
}
|
107
|
-
assert_match(/target/, ex.message)
|
108
|
-
assert_match(/BADNAME/, ex.message)
|
109
|
-
|
110
|
-
ex = assert_raises(FlexMock::BadInterceptionError) {
|
111
|
-
intercept(Bark).in("Dog").with("BADNAME")
|
112
|
-
}
|
113
|
-
assert_match(/replacement/, ex.message)
|
114
|
-
assert_match(/BADNAME/, ex.message)
|
115
|
-
end
|
116
|
-
|
117
|
-
end
|
118
|
-
|
119
|
-
class TestClassInterceptionExample < Test::Unit::TestCase
|
120
|
-
include FlexMock::TestCase
|
121
|
-
|
122
|
-
def setup
|
123
|
-
@dog = Dog.new
|
124
|
-
@mock = flexmock('bark')
|
125
|
-
intercept(Bark).in(Dog).with(@mock)
|
126
|
-
end
|
127
|
-
|
128
|
-
def test_interception
|
129
|
-
@mock.should_receive(:new).with_no_args.once.and_return(:purr)
|
130
|
-
assert_equal :purr, @dog.bark
|
131
|
-
end
|
132
|
-
end
|
133
|
-
|
134
|
-
class TestMockFactory < Test::Unit::TestCase
|
135
|
-
def test_mock_returns_factory
|
136
|
-
m = FlexMock.new("m")
|
137
|
-
f = m.mock_factory
|
138
|
-
assert_equal m, f.new
|
139
|
-
end
|
140
|
-
end
|