Ensure captors only fire when invocation satisfies when/verify #311
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.
@jamestalmage made a good catch in #308 that captors could be used with
td.when
but it was undocumented and it would also capture values when the rest of the rehearsal did not match the actual args. This was effectively a requirements miss, but because our goal is to havetd.when
andtd.verify
to behave as symmetrically as possible, it's something we needed to fix.James implemented a fix in #310, but I had three quibbles with it: (a) it broadened awareness of "capturing" to matchers themselves, even though captors are a one-off subset, (b) it expanded the private namespace claimed by matchers with
__capture
, and (c) it didn't verify that an argument was a matcher before invoking__capture
.afterSatisfaction
hook to the matcher creation, which only fires after all args match on an invocation or verificationFixes #310
Fixes #308