fix throws().callsFake() precedence#2497
Merged
fatso83 merged 1 commit intosinonjs:mainfrom Mar 12, 2023
Merged
Conversation
Codecov ReportPatch coverage:
Additional details and impacted files@@ Coverage Diff @@
## main #2497 +/- ##
=======================================
Coverage 95.95% 95.95%
=======================================
Files 38 38
Lines 1878 1880 +2
=======================================
+ Hits 1802 1804 +2
Misses 76 76
Flags with carried forward coverage won't be shown. Click here to find out more.
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here. ☔ View full report in Codecov by Sentry. |
Contributor
|
This is great and works just like the rest. Thanks! |
fatso83
pushed a commit
that referenced
this pull request
Mar 12, 2023
This makes sure an unconditional `callsFake()` invoked on the same stub that was previously setup to throw will overwrite the previous behavior. This aligns it with the other behaviors.
Contributor
|
published as sinon 15.0.2 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Purpose (TL;DR) - mandatory
Fixes #2496 by cleaning any previous
exception*behavior whencallsFakeis used.Background (Problem in detail)
Precedence among behaviors is defined by the behavior itself (cleaning other previously set behaviors) and by the order at invocation time.
Since
throwsbehavior (exceptionandexceptionHandler) is the first one to run at invocation time, other behaviors can only define precedence on its own definition. That's why I modifiedcallsFakebehavior to cleanthrowsSolution
When
callsFakeis chained on a stub it cleans previousexceptionandexceptionHandlervalues which essentially invalidates any previousthrowsorthrowsExceptionbehaviours.Note: I think this fix should not break any current usage, because any attempt to run the stubbed function would have raised an exception already and the developer would have noticed the same I did notice: callsFake was ignored, so that, probably they applied some workaround like restoring + callsFake OR recreating the stub + callsFake.
How to verify - mandatory
Run:
You should see:
Checklist for author
npm run lintpasses