[9.x] Allow random string generation to be controlled #42669
Merged
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.
This PR is the counterpart #42619, however this PR targets the
Str::random()
function.This allows developers to intercept and control the random string generation. This is useful in testing where the
Str::random()
function has been used directly, rather than via a service, and the develop would like to make an assertion against the result of theStr::random()
result.Take a test for the following function...
Here is a before an after for the potential tests. You will see that the first test doesn't give us as much confidence as the second.
It also allows developers to specify a sequence of random strings to return when the
Str::random()
function is called. This works in the same way seen in #42619.You can also specify the array keys so you only control certain calls...
Finally, you may pass a closure as the second parameter to control what happens when a random string is being generated, but you have not specified it in the sequence.
Notes
Str::createRandomStringsUsing(fn () => 'xyz')
is easily used.