rspec-mocks 2.14.6 → 2.99.0.beta1
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.
- checksums.yaml +8 -8
- data/Changelog.md +20 -14
- data/lib/rspec/mocks.rb +6 -2
- data/lib/rspec/mocks/any_instance/chain.rb +28 -0
- data/lib/rspec/mocks/any_instance/expectation_chain.rb +5 -10
- data/lib/rspec/mocks/any_instance/recorder.rb +4 -1
- data/lib/rspec/mocks/any_instance/stub_chain.rb +5 -5
- data/lib/rspec/mocks/caller_filter.rb +55 -0
- data/lib/rspec/mocks/configuration.rb +19 -0
- data/lib/rspec/mocks/deprecation.rb +9 -1
- data/lib/rspec/mocks/extensions/proc.rb +63 -0
- data/lib/rspec/mocks/framework.rb +2 -0
- data/lib/rspec/mocks/matchers/receive.rb +2 -9
- data/lib/rspec/mocks/message_expectation.rb +92 -22
- data/lib/rspec/mocks/method_double.rb +2 -2
- data/lib/rspec/mocks/proxy_for_nil.rb +2 -2
- data/lib/rspec/mocks/space.rb +4 -5
- data/lib/rspec/mocks/stub_chain.rb +1 -1
- data/lib/rspec/mocks/syntax.rb +3 -3
- data/lib/rspec/mocks/targets.rb +1 -1
- data/lib/rspec/mocks/test_double.rb +8 -2
- data/lib/rspec/mocks/version.rb +1 -1
- data/spec/rspec/mocks/and_yield_spec.rb +1 -1
- data/spec/rspec/mocks/any_instance/message_chains_spec.rb +3 -3
- data/spec/rspec/mocks/any_instance_spec.rb +233 -84
- data/spec/rspec/mocks/argument_expectation_spec.rb +4 -4
- data/spec/rspec/mocks/block_return_value_spec.rb +49 -11
- data/spec/rspec/mocks/bug_report_10263_spec.rb +1 -1
- data/spec/rspec/mocks/bug_report_8165_spec.rb +2 -2
- data/spec/rspec/mocks/combining_implementation_instructions_spec.rb +4 -4
- data/spec/rspec/mocks/double_spec.rb +7 -0
- data/spec/rspec/mocks/failing_argument_matchers_spec.rb +1 -0
- data/spec/rspec/mocks/matchers/receive_spec.rb +10 -8
- data/spec/rspec/mocks/mock_space_spec.rb +10 -0
- data/spec/rspec/mocks/mock_spec.rb +20 -1
- data/spec/rspec/mocks/mutate_const_spec.rb +25 -25
- data/spec/rspec/mocks/null_object_mock_spec.rb +7 -0
- data/spec/rspec/mocks/passing_argument_matchers_spec.rb +4 -2
- data/spec/rspec/mocks/record_messages_spec.rb +4 -4
- data/spec/rspec/mocks/space_spec.rb +1 -1
- data/spec/rspec/mocks/stub_chain_spec.rb +8 -12
- data/spec/rspec/mocks/syntax_agnostic_message_matchers_spec.rb +20 -0
- data/spec/rspec/mocks/test_double_spec.rb +0 -5
- data/spec/rspec/mocks_spec.rb +14 -0
- data/spec/spec_helper.rb +27 -0
- metadata +7 -5
@@ -92,9 +92,16 @@ module RSpec
|
|
92
92
|
it "preserves its nullness to subsequent examples to " +
|
93
93
|
"maintain compatibility with <= 2.13" do
|
94
94
|
RSpec::Mocks.teardown
|
95
|
+
allow(RSpec).to receive(:deprecate)
|
95
96
|
expect(@double).to be_null_object
|
96
97
|
expect { @double.some.long.message.chain }.not_to raise_error
|
97
98
|
end
|
99
|
+
|
100
|
+
it 'prints a deprecation warning when a double is re-used between examples' do
|
101
|
+
RSpec::Mocks.teardown
|
102
|
+
expect(RSpec).to receive(:deprecate).with(/null-ness/)
|
103
|
+
expect { @double.some.long.message.chain }.not_to raise_error
|
104
|
+
end
|
98
105
|
end
|
99
106
|
|
100
107
|
describe "#as_null_object" do
|
@@ -85,11 +85,13 @@ module RSpec
|
|
85
85
|
end
|
86
86
|
|
87
87
|
context "handling block matchers" do
|
88
|
+
before { allow_deprecation }
|
89
|
+
|
88
90
|
it "matches arguments against RSpec expectations" do
|
89
91
|
@double.should_receive(:random_call).with {|arg1, arg2, arr, *rest|
|
90
92
|
expect(arg1).to eq 5
|
91
|
-
expect(arg2).to
|
92
|
-
expect(arg2).to
|
93
|
+
expect(arg2.length).to be >= 3
|
94
|
+
expect(arg2.length).to be <= 10
|
93
95
|
expect(arr.map {|i| i * 2}).to eq [2,4,6]
|
94
96
|
expect(rest).to eq [:fee, "fi", 4]
|
95
97
|
}
|
@@ -7,19 +7,19 @@ module RSpec
|
|
7
7
|
@mock = double("mock").as_null_object
|
8
8
|
end
|
9
9
|
it "answers false for received_message? when no messages received" do
|
10
|
-
expect(@mock.received_message?(:message)).to
|
10
|
+
expect(@mock.received_message?(:message)).to be false
|
11
11
|
end
|
12
12
|
it "answers true for received_message? when message received" do
|
13
13
|
@mock.message
|
14
|
-
expect(@mock.received_message?(:message)).to
|
14
|
+
expect(@mock.received_message?(:message)).to be true
|
15
15
|
end
|
16
16
|
it "answers true for received_message? when message received with correct args" do
|
17
17
|
@mock.message 1,2,3
|
18
|
-
expect(@mock.received_message?(:message, 1,2,3)).to
|
18
|
+
expect(@mock.received_message?(:message, 1,2,3)).to be true
|
19
19
|
end
|
20
20
|
it "answers false for received_message? when message received with incorrect args" do
|
21
21
|
@mock.message 1,2,3
|
22
|
-
expect(@mock.received_message?(:message, 1,2)).to
|
22
|
+
expect(@mock.received_message?(:message, 1,2)).to be false
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
@@ -5,6 +5,14 @@ module RSpec
|
|
5
5
|
describe "A chained method stub" do
|
6
6
|
let(:object) { Object.new }
|
7
7
|
|
8
|
+
it 'does not get confused by symbol vs string usage for the messages' do
|
9
|
+
object.stub_chain(:foo, :bar => 1)
|
10
|
+
object.stub_chain("foo", :bazz => 2)
|
11
|
+
|
12
|
+
expect(object.foo.bar).to eq(1)
|
13
|
+
expect(object.foo.bazz).to eq(2)
|
14
|
+
end
|
15
|
+
|
8
16
|
context "with one method in chain" do
|
9
17
|
context "using and_return" do
|
10
18
|
it "returns expected value from chaining only one method call" do
|
@@ -29,18 +37,6 @@ module RSpec
|
|
29
37
|
end
|
30
38
|
|
31
39
|
context "with two methods in chain" do
|
32
|
-
it "accepts any number of arguments to the stubbed messages" do
|
33
|
-
object.stub_chain(:msg1, :msg2).and_return(:return_value)
|
34
|
-
|
35
|
-
expect(object.msg1("nonsense", :value).msg2("another", :nonsense, 3.0, "value")).to eq(:return_value)
|
36
|
-
end
|
37
|
-
|
38
|
-
it "accepts any number of arguments to the stubbed messages with a return value from a hash" do
|
39
|
-
object.stub_chain(:msg1, :msg2 => :return_value)
|
40
|
-
|
41
|
-
expect(object.msg1("nonsense", :value).msg2("another", :nonsense, 3.0, "value")).to eq(:return_value)
|
42
|
-
end
|
43
|
-
|
44
40
|
context "using and_return" do
|
45
41
|
it "returns expected value from chaining two method calls" do
|
46
42
|
object.stub_chain(:msg1, :msg2).and_return(:return_value)
|
@@ -35,6 +35,16 @@ module RSpec
|
|
35
35
|
::RSpec::Mocks.allow_message(subject, :message)
|
36
36
|
expect { verify subject }.not_to raise_error
|
37
37
|
end
|
38
|
+
|
39
|
+
it 'does not get confused when the string and symbol message form are both used' do
|
40
|
+
::RSpec::Mocks.allow_message(subject, :foo).with(1) { :a }
|
41
|
+
::RSpec::Mocks.allow_message(subject, "foo").with(2) { :b }
|
42
|
+
|
43
|
+
expect(subject.foo(1)).to eq(:a)
|
44
|
+
expect(subject.foo(2)).to eq(:b)
|
45
|
+
|
46
|
+
reset subject
|
47
|
+
end
|
38
48
|
end
|
39
49
|
|
40
50
|
describe ".expect_message" do
|
@@ -75,6 +85,16 @@ module RSpec
|
|
75
85
|
verify subject
|
76
86
|
end
|
77
87
|
|
88
|
+
it 'does not get confused when the string and symbol message form are both used' do
|
89
|
+
::RSpec::Mocks.expect_message(subject, :foo).with(1)
|
90
|
+
::RSpec::Mocks.expect_message(subject, "foo").with(2)
|
91
|
+
|
92
|
+
subject.foo(1)
|
93
|
+
subject.foo(2)
|
94
|
+
|
95
|
+
verify subject
|
96
|
+
end
|
97
|
+
|
78
98
|
end
|
79
99
|
|
80
100
|
end
|
@@ -56,11 +56,6 @@ module RSpec
|
|
56
56
|
double = Module.new { TestDouble.extend_onto(self) }
|
57
57
|
expect { double.foo }.to raise_error(/Mock received/)
|
58
58
|
end
|
59
|
-
|
60
|
-
it 'warns of deprecation of :null_object => true' do
|
61
|
-
RSpec.should_receive :deprecate
|
62
|
-
double = Class.new { TestDouble.extend_onto self, 'name', :null_object => true }
|
63
|
-
end
|
64
59
|
end
|
65
60
|
end
|
66
61
|
end
|
data/spec/rspec/mocks_spec.rb
CHANGED
@@ -62,4 +62,18 @@ describe RSpec::Mocks do
|
|
62
62
|
load "spec/mocks.rb"
|
63
63
|
end
|
64
64
|
end
|
65
|
+
|
66
|
+
def file_contents_for(lib, filename)
|
67
|
+
# http://rubular.com/r/HYpUMftlG2
|
68
|
+
path = $LOAD_PATH.find { |p| p.match(/\/rspec-#{lib}(-[a-f0-9]+)?\/lib/) }
|
69
|
+
file = File.join(path, filename)
|
70
|
+
File.read(file)
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'has an up-to-date caller_filter file' do
|
74
|
+
mocks = file_contents_for("mocks", "rspec/mocks/caller_filter.rb")
|
75
|
+
core = file_contents_for("core", "rspec/core/caller_filter.rb")
|
76
|
+
|
77
|
+
expect(mocks).to eq(core)
|
78
|
+
end
|
65
79
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -20,6 +20,20 @@ module VerifyAndResetHelpers
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
+
# TODO: This is duplicated in rspec-core, should be extracted into
|
24
|
+
# rspec-support when that project gets started.
|
25
|
+
module HelperMethods
|
26
|
+
def expect_deprecation_with_call_site(file, line)
|
27
|
+
expect(RSpec.configuration.reporter).to receive(:deprecation) do |options|
|
28
|
+
expect(options[:call_site]).to include([file, line].join(':'))
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def allow_deprecation
|
33
|
+
allow(RSpec.configuration.reporter).to receive(:deprecation)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
23
37
|
RSpec.configure do |config|
|
24
38
|
config.mock_with :rspec
|
25
39
|
config.color_enabled = true
|
@@ -34,6 +48,7 @@ RSpec.configure do |config|
|
|
34
48
|
|
35
49
|
old_verbose = nil
|
36
50
|
config.before(:each, :silence_warnings) do
|
51
|
+
allow(RSpec).to receive(:deprecate)
|
37
52
|
old_verbose = $VERBOSE
|
38
53
|
$VERBOSE = nil
|
39
54
|
end
|
@@ -43,6 +58,7 @@ RSpec.configure do |config|
|
|
43
58
|
end
|
44
59
|
|
45
60
|
config.include VerifyAndResetHelpers
|
61
|
+
config.include HelperMethods
|
46
62
|
end
|
47
63
|
|
48
64
|
shared_context "with syntax" do |syntax|
|
@@ -58,3 +74,14 @@ shared_context "with syntax" do |syntax|
|
|
58
74
|
end
|
59
75
|
end
|
60
76
|
|
77
|
+
shared_context "with isolated configuration" do
|
78
|
+
orig_configuration = nil
|
79
|
+
before do
|
80
|
+
orig_configuration = RSpec::Mocks.configuration
|
81
|
+
RSpec::Mocks.instance_variable_set(:@configuration, RSpec::Mocks::Configuration.new)
|
82
|
+
end
|
83
|
+
|
84
|
+
after do
|
85
|
+
RSpec::Mocks.instance_variable_set(:@configuration, orig_configuration)
|
86
|
+
end
|
87
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec-mocks
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.99.0.beta1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Steven Baker
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-11-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -68,6 +68,7 @@ files:
|
|
68
68
|
- lib/rspec/mocks/any_instance/stub_chain_chain.rb
|
69
69
|
- lib/rspec/mocks/argument_list_matcher.rb
|
70
70
|
- lib/rspec/mocks/argument_matchers.rb
|
71
|
+
- lib/rspec/mocks/caller_filter.rb
|
71
72
|
- lib/rspec/mocks/configuration.rb
|
72
73
|
- lib/rspec/mocks/deprecation.rb
|
73
74
|
- lib/rspec/mocks/error_generator.rb
|
@@ -75,6 +76,7 @@ files:
|
|
75
76
|
- lib/rspec/mocks/example_methods.rb
|
76
77
|
- lib/rspec/mocks/extensions/instance_exec.rb
|
77
78
|
- lib/rspec/mocks/extensions/marshal.rb
|
79
|
+
- lib/rspec/mocks/extensions/proc.rb
|
78
80
|
- lib/rspec/mocks/framework.rb
|
79
81
|
- lib/rspec/mocks/instance_method_stasher.rb
|
80
82
|
- lib/rspec/mocks/matchers/have_received.rb
|
@@ -209,15 +211,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
209
211
|
version: '0'
|
210
212
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
211
213
|
requirements:
|
212
|
-
- - ! '
|
214
|
+
- - ! '>'
|
213
215
|
- !ruby/object:Gem::Version
|
214
|
-
version:
|
216
|
+
version: 1.3.1
|
215
217
|
requirements: []
|
216
218
|
rubyforge_project: rspec
|
217
219
|
rubygems_version: 2.0.7
|
218
220
|
signing_key:
|
219
221
|
specification_version: 4
|
220
|
-
summary: rspec-mocks-2.
|
222
|
+
summary: rspec-mocks-2.99.0.beta1
|
221
223
|
test_files:
|
222
224
|
- features/README.md
|
223
225
|
- features/Scope.md
|