Add DSL keyword "repeatedly" which enables repeated answer #1241
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
I'd like to add a new DSL keyword "repeatedly" which makes a mock to repeat a certain answer the specified number of times.
The usage is like the following.
The mock repeatedly replies "repeating" 3 times, and then replies "final".
Background
The reason why I'd like this feature is that I actually needed it when I made unit tests of a retry operation.
Let's say there are classes like the following.
Then we want to make a test of
RetryableOperation
with the scenario where:failableOperation.runFailable()
throws an exception several times less thanmaxAttempts
.failableOperation.runFailable()
returns an expected value.We can make this test using existing features like the following, but the code not only doesn't look smart but also is not readable. (It takes an effort to know how many times the mock throws exception. 9 times? 10 times?)
Using the new keyword
repeatedly
, the test can look smart and be readable like the following. (Now it's easy to know that the mock throws an exception 9 times.)