rspec-mocks 2.1.0 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +9 -6
- data/Guardfile +8 -0
- data/History.markdown +12 -0
- data/License.txt +2 -2
- data/{README.markdown → README.md} +10 -2
- data/Rakefile +1 -1
- data/Upgrade.markdown +14 -0
- data/features/outside_rspec/standalone.feature +32 -0
- data/lib/rspec/mocks.rb +2 -2
- data/lib/rspec/mocks/argument_expectation.rb +10 -5
- data/lib/rspec/mocks/message_expectation.rb +1 -1
- data/lib/rspec/mocks/standalone.rb +3 -0
- data/lib/rspec/mocks/version.rb +1 -1
- data/rspec-mocks.gemspec +1 -1
- data/spec/rspec/mocks/argument_expectation_spec.rb +6 -4
- data/spec/rspec/mocks/mock_spec.rb +24 -0
- metadata +13 -9
- data/lib/rspec/mocks/extensions/object.rb +0 -3
data/Gemfile
CHANGED
@@ -5,14 +5,17 @@ source "http://rubygems.org"
|
|
5
5
|
end
|
6
6
|
|
7
7
|
gem "rake"
|
8
|
-
gem "cucumber", "0.
|
8
|
+
gem "cucumber", "0.9.4"
|
9
9
|
gem "aruba", "0.2.2"
|
10
10
|
gem "autotest"
|
11
11
|
gem "relish"
|
12
|
+
gem "guard-rspec"
|
13
|
+
gem "growl"
|
12
14
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
gem "
|
15
|
+
gem "ruby-debug", :platforms => :ruby_18
|
16
|
+
gem "ruby-debug19", :platforms => :ruby_19
|
17
|
+
|
18
|
+
platforms :ruby_18, :ruby_19 do
|
19
|
+
gem "rb-fsevent"
|
20
|
+
gem "ruby-prof"
|
18
21
|
end
|
data/Guardfile
ADDED
data/History.markdown
CHANGED
@@ -1,5 +1,17 @@
|
|
1
1
|
## rspec-mocks release history (incomplete)
|
2
2
|
|
3
|
+
### 2.2.0 / 2010-11-28
|
4
|
+
|
5
|
+
[full changelog](http://github.com/rspec/rspec-mocks/compare/v2.1.0...v2.2.0)
|
6
|
+
|
7
|
+
* Enhancements
|
8
|
+
* Added "rspec/mocks/standalone" for exploring the rspec-mocks in irb.
|
9
|
+
|
10
|
+
* Bug fix
|
11
|
+
* Eliminate warning on splat args without parens (Gioele Barabucci)
|
12
|
+
* Fix bug where obj.should_receive(:foo).with(stub.as_null_object) would
|
13
|
+
pass with a false positive.
|
14
|
+
|
3
15
|
### 2.1.0 / 2010-11-07
|
4
16
|
|
5
17
|
[full changelog](http://github.com/rspec/rspec-mocks/compare/v2.0.1...v2.1.0)
|
data/License.txt
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
(The MIT License)
|
2
2
|
|
3
|
-
Copyright (c) 2005
|
3
|
+
Copyright (c) 2005 The RSpec Development Team
|
4
4
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining
|
6
6
|
a copy of this software and associated documentation files (the
|
@@ -19,4 +19,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
19
19
|
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
20
20
|
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
21
21
|
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
22
|
-
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@@ -5,8 +5,16 @@ for method stubs, fakes, and message expectations.
|
|
5
5
|
|
6
6
|
## Documentation
|
7
7
|
|
8
|
-
|
9
|
-
|
8
|
+
The [Cucumber features](http://relishapp.com/rspec/rspec-mocks/v/2-1) are the
|
9
|
+
most comprehensive and up-to-date docs for end-users.
|
10
|
+
|
11
|
+
The [RDoc](http://rubydoc.info/gems/rspec-mocks/2.1/frames) provides additional
|
12
|
+
information for contributors and/or extenders.
|
13
|
+
|
14
|
+
All of the documentation is open source and a work in progress. If you find it
|
15
|
+
lacking or confusing, you can help improve it by submitting requests and
|
16
|
+
patches to the [rspec-mocks issue
|
17
|
+
tracker](https://github.com/rspec/rspec-mocks/issues).
|
10
18
|
|
11
19
|
## Install
|
12
20
|
|
data/Rakefile
CHANGED
@@ -64,7 +64,7 @@ end
|
|
64
64
|
desc "Push cukes to relishapp using the relish-client-gem"
|
65
65
|
task :relish, :version do |t, args|
|
66
66
|
raise "rake relish[VERSION]" unless args[:version]
|
67
|
-
sh "
|
67
|
+
sh "relish push --organization rspec --project rspec-mocks -v #{args[:version]}"
|
68
68
|
end
|
69
69
|
|
70
70
|
task :default => [:spec, :cucumber]
|
data/Upgrade.markdown
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
# rspec-mocks-2.2
|
2
|
+
|
3
|
+
## What's new
|
4
|
+
|
5
|
+
### `require "rspec/mocks/standalone"`
|
6
|
+
|
7
|
+
Sets up top-level environment to explore rspec-mocks. Mostly useful in irb:
|
8
|
+
|
9
|
+
$ irb
|
10
|
+
> require 'rspec/mocks/standalone'
|
11
|
+
> foo = double()
|
12
|
+
> foo.stub(:bar) { :baz }
|
13
|
+
> foo.bar
|
14
|
+
=> :baz
|
@@ -0,0 +1,32 @@
|
|
1
|
+
Feature: standalone
|
2
|
+
|
3
|
+
require "rspec/mocks/standalone" to expose the mock framework
|
4
|
+
outside the RSpec environment. This is especially useful for
|
5
|
+
exploring rspec-mocks in irb.
|
6
|
+
|
7
|
+
Scenario: stub outside rspec
|
8
|
+
Given a file named "example.rb" with:
|
9
|
+
"""
|
10
|
+
require "rspec/mocks/standalone"
|
11
|
+
|
12
|
+
greeter = double("greeter")
|
13
|
+
greeter.stub(:say_hi) { "Hello!" }
|
14
|
+
puts greeter.say_hi
|
15
|
+
"""
|
16
|
+
When I run "ruby example.rb"
|
17
|
+
Then the output should contain "Hello!"
|
18
|
+
|
19
|
+
Scenario: message expectation outside rspec
|
20
|
+
Given a file named "example.rb" with:
|
21
|
+
"""
|
22
|
+
require "rspec/mocks/standalone"
|
23
|
+
|
24
|
+
greeter = double("greeter")
|
25
|
+
greeter.should_receive(:say_hi)
|
26
|
+
|
27
|
+
RSpec::Mocks.verify
|
28
|
+
"""
|
29
|
+
When I run "ruby example.rb"
|
30
|
+
Then the output should contain "say_hi(any args) (RSpec::Mocks::MockExpectationError)"
|
31
|
+
Then the output should contain "expected: 1 time"
|
32
|
+
Then the output should contain "received: 0 times"
|
data/lib/rspec/mocks.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'rspec/mocks/framework'
|
2
2
|
require 'rspec/mocks/version'
|
3
|
+
require 'rspec/mocks/spec_methods'
|
3
4
|
|
4
5
|
module RSpec
|
5
6
|
# == Test Doubles
|
@@ -176,8 +177,7 @@ module RSpec
|
|
176
177
|
attr_accessor :space
|
177
178
|
|
178
179
|
def setup(includer)
|
179
|
-
|
180
|
-
require 'rspec/mocks/spec_methods'
|
180
|
+
Object.class_eval { include RSpec::Mocks::Methods } unless Object < RSpec::Mocks::Methods
|
181
181
|
(class << includer; self; end).class_eval do
|
182
182
|
include RSpec::Mocks::ExampleMethods
|
183
183
|
end
|
@@ -9,9 +9,10 @@ module RSpec
|
|
9
9
|
@match_any_args = false
|
10
10
|
@matchers = nil
|
11
11
|
|
12
|
-
|
12
|
+
case args.first
|
13
|
+
when ArgumentMatchers::AnyArgsMatcher
|
13
14
|
@match_any_args = true
|
14
|
-
|
15
|
+
when ArgumentMatchers::NoArgsMatcher
|
15
16
|
@matchers = []
|
16
17
|
else
|
17
18
|
@matchers = args.collect {|arg| matcher_for(arg)}
|
@@ -19,13 +20,17 @@ module RSpec
|
|
19
20
|
end
|
20
21
|
|
21
22
|
def matcher_for(arg)
|
22
|
-
return ArgumentMatchers::MatcherMatcher.new(arg)
|
23
|
-
return ArgumentMatchers::RegexpMatcher.new(arg)
|
23
|
+
return ArgumentMatchers::MatcherMatcher.new(arg) if is_matcher?(arg)
|
24
|
+
return ArgumentMatchers::RegexpMatcher.new(arg) if arg.is_a?(Regexp)
|
24
25
|
return ArgumentMatchers::EqualityProxy.new(arg)
|
25
26
|
end
|
26
27
|
|
27
28
|
def is_matcher?(obj)
|
28
|
-
|
29
|
+
!is_stub_as_null_object?(obj) & obj.respond_to?(:matches?) & obj.respond_to?(:description)
|
30
|
+
end
|
31
|
+
|
32
|
+
def is_stub_as_null_object?(obj)
|
33
|
+
obj.respond_to?(:__rspec_double_acting_as_null_object?) && obj.__rspec_double_acting_as_null_object?
|
29
34
|
end
|
30
35
|
|
31
36
|
def args_match?(*args)
|
data/lib/rspec/mocks/version.rb
CHANGED
data/rspec-mocks.gemspec
CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.files = `git ls-files`.split("\n")
|
19
19
|
s.test_files = `git ls-files -- {spec,features}/*`.split("\n")
|
20
20
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
21
|
-
s.extra_rdoc_files = [ "README.
|
21
|
+
s.extra_rdoc_files = [ "README.md" ]
|
22
22
|
s.rdoc_options = ["--charset=UTF-8"]
|
23
23
|
s.require_path = "lib"
|
24
24
|
end
|
@@ -6,16 +6,18 @@ module RSpec
|
|
6
6
|
it "considers an object that responds to #matches? and #description to be a matcher" do
|
7
7
|
argument_expecatation = RSpec::Mocks::ArgumentExpectation.new
|
8
8
|
obj = double("matcher")
|
9
|
-
obj.
|
10
|
-
obj.
|
9
|
+
obj.stub(:respond_to?).with(:__rspec_double_acting_as_null_object?).and_return(false)
|
10
|
+
obj.stub(:respond_to?).with(:matches?).and_return(true)
|
11
|
+
obj.stub(:respond_to?).with(:description).and_return(true)
|
11
12
|
argument_expecatation.is_matcher?(obj).should be_true
|
12
13
|
end
|
13
14
|
|
14
15
|
it "does NOT consider an object that only responds to #matches? to be a matcher" do
|
15
16
|
argument_expecatation = RSpec::Mocks::ArgumentExpectation.new
|
16
17
|
obj = double("matcher")
|
17
|
-
obj.
|
18
|
-
obj.
|
18
|
+
obj.stub(:respond_to?).with(:__rspec_double_acting_as_null_object?).and_return(false)
|
19
|
+
obj.stub(:respond_to?).with(:matches?).and_return(true)
|
20
|
+
obj.stub(:respond_to?).with(:description).and_return(false)
|
19
21
|
argument_expecatation.is_matcher?(obj).should be_false
|
20
22
|
end
|
21
23
|
end
|
@@ -635,6 +635,30 @@ module RSpec
|
|
635
635
|
@mock.rspec_reset
|
636
636
|
end
|
637
637
|
end
|
638
|
+
|
639
|
+
context "with non-matching doubles" do
|
640
|
+
it "fails" do
|
641
|
+
d1 = double('1')
|
642
|
+
d2 = double('2')
|
643
|
+
@mock.should_receive(:foo).with(d1)
|
644
|
+
expect do
|
645
|
+
@mock.foo(d2)
|
646
|
+
end.to raise_error
|
647
|
+
@mock.rspec_reset
|
648
|
+
end
|
649
|
+
end
|
650
|
+
|
651
|
+
context "with non-matching doubles as_null_object" do
|
652
|
+
it "fails" do
|
653
|
+
d1 = double('1').as_null_object
|
654
|
+
d2 = double('2').as_null_object
|
655
|
+
@mock.should_receive(:foo).with(d1)
|
656
|
+
expect do
|
657
|
+
@mock.foo(d2)
|
658
|
+
end.to raise_error
|
659
|
+
@mock.rspec_reset
|
660
|
+
end
|
661
|
+
end
|
638
662
|
end
|
639
663
|
|
640
664
|
context "with a block" do
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 2
|
7
|
-
-
|
7
|
+
- 2
|
8
8
|
- 0
|
9
|
-
version: 2.
|
9
|
+
version: 2.2.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- David Chelimsky
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-11-
|
18
|
+
date: 2010-11-28 00:00:00 -06:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|
@@ -26,16 +26,18 @@ executables: []
|
|
26
26
|
extensions: []
|
27
27
|
|
28
28
|
extra_rdoc_files:
|
29
|
-
- README.
|
29
|
+
- README.md
|
30
30
|
files:
|
31
31
|
- .autotest
|
32
32
|
- .document
|
33
33
|
- .gitignore
|
34
34
|
- Gemfile
|
35
|
+
- Guardfile
|
35
36
|
- History.markdown
|
36
37
|
- License.txt
|
37
|
-
- README.
|
38
|
+
- README.md
|
38
39
|
- Rakefile
|
40
|
+
- Upgrade.markdown
|
39
41
|
- autotest/discover.rb
|
40
42
|
- cucumber.yml
|
41
43
|
- features/README.markdown
|
@@ -43,6 +45,7 @@ files:
|
|
43
45
|
- features/message_expectations/expect_message.feature
|
44
46
|
- features/message_expectations/warn_when_expectation_is_set_on_nil.feature
|
45
47
|
- features/outside_rspec/configuration.feature
|
48
|
+
- features/outside_rspec/standalone.feature
|
46
49
|
- features/stubs/simple_return_value.feature
|
47
50
|
- features/stubs/stub_chain.feature
|
48
51
|
- features/stubs/stub_implementation.feature
|
@@ -54,7 +57,6 @@ files:
|
|
54
57
|
- lib/rspec/mocks/errors.rb
|
55
58
|
- lib/rspec/mocks/extensions/instance_exec.rb
|
56
59
|
- lib/rspec/mocks/extensions/marshal.rb
|
57
|
-
- lib/rspec/mocks/extensions/object.rb
|
58
60
|
- lib/rspec/mocks/framework.rb
|
59
61
|
- lib/rspec/mocks/message_expectation.rb
|
60
62
|
- lib/rspec/mocks/method_double.rb
|
@@ -65,6 +67,7 @@ files:
|
|
65
67
|
- lib/rspec/mocks/serialization.rb
|
66
68
|
- lib/rspec/mocks/space.rb
|
67
69
|
- lib/rspec/mocks/spec_methods.rb
|
70
|
+
- lib/rspec/mocks/standalone.rb
|
68
71
|
- lib/rspec/mocks/version.rb
|
69
72
|
- lib/spec/mocks.rb
|
70
73
|
- rspec-mocks.gemspec
|
@@ -126,7 +129,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
126
129
|
requirements:
|
127
130
|
- - ">="
|
128
131
|
- !ruby/object:Gem::Version
|
129
|
-
hash: -
|
132
|
+
hash: -3345678086829726871
|
130
133
|
segments:
|
131
134
|
- 0
|
132
135
|
version: "0"
|
@@ -135,7 +138,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
135
138
|
requirements:
|
136
139
|
- - ">="
|
137
140
|
- !ruby/object:Gem::Version
|
138
|
-
hash: -
|
141
|
+
hash: -3345678086829726871
|
139
142
|
segments:
|
140
143
|
- 0
|
141
144
|
version: "0"
|
@@ -145,13 +148,14 @@ rubyforge_project: rspec
|
|
145
148
|
rubygems_version: 1.3.7
|
146
149
|
signing_key:
|
147
150
|
specification_version: 3
|
148
|
-
summary: rspec-mocks-2.
|
151
|
+
summary: rspec-mocks-2.2.0
|
149
152
|
test_files:
|
150
153
|
- features/README.markdown
|
151
154
|
- features/message_expectations/block_local_expectations.feature.pending
|
152
155
|
- features/message_expectations/expect_message.feature
|
153
156
|
- features/message_expectations/warn_when_expectation_is_set_on_nil.feature
|
154
157
|
- features/outside_rspec/configuration.feature
|
158
|
+
- features/outside_rspec/standalone.feature
|
155
159
|
- features/stubs/simple_return_value.feature
|
156
160
|
- features/stubs/stub_chain.feature
|
157
161
|
- features/stubs/stub_implementation.feature
|