minitest-stub_on_roids 0.0.1 → 0.0.3

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +112 -0
  3. metadata +4 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c0b8760d30284aeb26f44e7771f8b32db37a78d00ea8d04af20f90cbf6c8b439
4
- data.tar.gz: c6c64beec89ab4d501d073ab34f4f865c5ecaa9519c5370d660d2ef07f8c0de8
3
+ metadata.gz: aaef4c0cb77c912a56a222ad9bd287d5bf9f39f386917bea4a7c2ee0ff343498
4
+ data.tar.gz: 3dc69f5af5f646e6a3497ac3a4481f7d32651ae5e35a6db74cb832733724b378
5
5
  SHA512:
6
- metadata.gz: 4d0bbc8b817dd275724080971a3a457e9f4eadae6dfc97dabd3b8fbadfd8b264156bd0d5897c3e4764653b633b5af29fe222b08f360476501298165d58787196
7
- data.tar.gz: d565173266a7c2731ea36a0d02c2a1a93da885996ec4a5a57003d6cb345ecc57b1c810289e4fc3a25c2fb68486e4166b59e2774ab7d2a49ab8f4fe2cfee6df62
6
+ metadata.gz: 743ed77b28fc873a00364634899354aae4cb686a5eee54317130885b27b2ff6899285d978c8dcf6b2e2b0ab72cffa1dd110efa87a58748866fb145a2319e4e5b
7
+ data.tar.gz: 11ae76fcc9956d9278f484910527d242f348c548020f44d5ff094bbd1368b82489eea606028c651396392c57a0a96669cb76546cbe80303ad3b4280a6e046ad3
data/README.md CHANGED
@@ -1 +1,113 @@
1
1
  # minitest-stub_on_roids
2
+
3
+ Provides a set of helper methods around Minitest's `Object#stub` method.
4
+
5
+ The following methods are available:
6
+
7
+ * `#stub_with_args`
8
+ 1. Stubs a class method for the duration of the block.
9
+ 2. *If* the method is called, asserts that it is called with the expected arguments.
10
+ 3. Doesn't mind how many times the method is called, if at all.
11
+ * `#stub_and_expect`
12
+ 1. Stubs a class method for the duration of the block.
13
+ 2. Asserts that the method is called the exact amount of times as expected, and with the expected arguments.
14
+
15
+
16
+ ## Installation
17
+
18
+ Add this line to your application's Gemfile:
19
+
20
+ gem "minitest-stub_on_roids"
21
+
22
+ And then execute:
23
+
24
+ $ bundle
25
+
26
+ Or install it yourself as:
27
+
28
+ $ gem install minitest-stub_on_roids
29
+
30
+ ## Usage
31
+
32
+ Require `minitest/stub_on_roids` in your test:
33
+
34
+ ```ruby
35
+ require 'minitest/stub_on_roids'
36
+ ```
37
+
38
+ Extend the class you want to stub methods of:
39
+
40
+ ```ruby
41
+ Banana.extend Minitest::StubOnRoids
42
+ ```
43
+
44
+ This will add the following methods to the class:
45
+
46
+ ### `#stub_with_args`
47
+
48
+ Use `#stub_with_args` to stub a class method as you normally would but also assert that if it is called - it is called with the expected arguments:
49
+
50
+ ```ruby
51
+ Banana.stub_with_args(:new, banana_mock, [3.0, "Yellow"]) do
52
+ Banana.new(3.0, "Yellow")
53
+ end
54
+
55
+ # :new is stubbed and `banana_mock` is returned instead
56
+
57
+ Banana.stub_with_args(:new, banana_mock, [3.0, "Green"]) do
58
+ Banana.new(3.0, "Yellow")
59
+ end
60
+
61
+ # A StubbedMethodArgsError is raised because :new was called with the wrong arguments
62
+ ```
63
+
64
+ Just like with Minitest's `Object#stub` method, there is no expectation on the amount of times the stubbed method is called in the block.
65
+
66
+ ### `#stub_and_expect`
67
+
68
+ Use `#stub_and_expect` to stub a class method as you normally would but also set expectations on it, similarly to using `Minitest::Mock#expect`.
69
+
70
+ This means that a `MockExpectationError` will be thrown if inside the block:
71
+ * The method is called with a different set of arguments than expected.
72
+ * The method is called more or less the amount of times it was expected to be called.
73
+
74
+ ```ruby
75
+ Banana.stub_and_expect(:new, banana_mock, [3.0, "Yellow"]) do
76
+ # Not calling `Banana.new`
77
+ end
78
+
79
+ # => MockExpectationError raised
80
+ ```
81
+
82
+ ```ruby
83
+ Banana.stub_and_expect(:new, banana_mock, [3.0, "Yellow"]) do
84
+ Banana.new(3.0, "Yellow")
85
+ Banana.new(3.0, "Yellow")
86
+ end
87
+
88
+ # => MockExpectationError raised
89
+ ```
90
+
91
+ Use the `times` keyword argument to expect a method to be called a specific amount of times within the block (default is 1):
92
+
93
+ ```ruby
94
+ Banana.stub_and_expect(:new, banana_mock, [3.0, "Yellow"], times: 2) do
95
+ Banana.new(3.0, "Yellow")
96
+ Banana.new(3.0, "Yellow")
97
+ end
98
+
99
+ # => Works
100
+ ```
101
+
102
+ ### Limitations
103
+
104
+ * Nesting blocks is not supported, meaning you can't expect methods to be called with more than one set of arguments at a time.
105
+ * This gem might work with instance methods as well, but its intent is (and it's only tested for) using it on class methods.
106
+
107
+ ## Contributing
108
+
109
+ Bug reports and pull requests are welcome on GitHub at https://github.com/thatguysimon/minitest-stub_on_roids. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](https://contributor-covenant.org) code of conduct.
110
+
111
+ ## License
112
+
113
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minitest-stub_on_roids
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Simon Nizov
@@ -10,7 +10,7 @@ bindir: bin
10
10
  cert_chain: []
11
11
  date: 2019-08-05 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: ''
13
+ description: A set of helper methods based around Minitest's Object#stub method.
14
14
  email: simon.nizov@gmail.com
15
15
  executables: []
16
16
  extensions: []
@@ -21,7 +21,7 @@ files:
21
21
  - README.md
22
22
  - Rakefile
23
23
  - lib/minitest/stub_on_roids.rb
24
- homepage: https://rubygems.org/gems/minitest-stub_on_roids
24
+ homepage: https://github.com/thatguysimon/minitest-stub_on_roids
25
25
  licenses:
26
26
  - MIT
27
27
  metadata: {}
@@ -43,5 +43,5 @@ requirements: []
43
43
  rubygems_version: 3.0.3
44
44
  signing_key:
45
45
  specification_version: 4
46
- summary: 'Minitest''s #stub but with arguments assertion and expectation'
46
+ summary: 'Minitest''s #stub but on steroids'
47
47
  test_files: []