New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Return returned value of invokant when using yields* and callsArg* #1724
Merged
mroderick
merged 6 commits into
sinonjs:master
from
ungrim97:yield_return_invocants_return
Mar 15, 2018
Merged
Changes from 1 commit
Commits
Show all changes
6 commits
Select commit
Hold shift + click to select a range
03314a4
Return returned value of invokant when using yields* and callsArg*
ungrim97 07b2144
Add spacing between test setup and assertion statements
ungrim97 542e286
Use existing callArgAt property rather than new yield property to det…
ungrim97 ea9f9a8
Use set of returnValue to determine return value of stub rather than …
ungrim97 9b8d3b1
Update test names to be more explicit about expected byplay between y…
ungrim97 0a7e336
1724: Fixed typo
ungrim97 File filter
Filter by extension
Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
There are no files selected for viewing
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -92,9 +92,11 @@ function callCallback(behavior, args) { | |
func.apply(behavior.callbackContext, behavior.callbackArguments); | ||
}); | ||
} else { | ||
func.apply(behavior.callbackContext, behavior.callbackArguments); | ||
return func.apply(behavior.callbackContext, behavior.callbackArguments); | ||
} | ||
} | ||
|
||
return undefined; | ||
} | ||
|
||
var proto = { | ||
|
@@ -125,7 +127,7 @@ var proto = { | |
}, | ||
|
||
invoke: function invoke(context, args) { | ||
callCallback(this, args); | ||
var returnValue = callCallback(this, args); | ||
|
||
if (this.exception) { | ||
throw this.exception; | ||
|
@@ -156,7 +158,12 @@ var proto = { | |
return (this.promiseLibrary || Promise).reject(this.returnValue); | ||
} else if (this.callsThrough) { | ||
return this.stub.wrappedMethod.apply(context, args); | ||
} else if (this.returnValueDefined) { | ||
return this.returnValue; | ||
} else if (this.yields) { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is a new property really required? I think checking for There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It would seem that callArgAt will work for this. |
||
return returnValue; | ||
} | ||
|
||
return this.returnValue; | ||
}, | ||
|
||
|
This file contains 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
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Where is
returnValueDefined
being set? I don't see it anywhere else.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Its set in
default-behaviour.js
for returns, and resolves. Not sure it was the perfect answer. Original thought oftypeof this.returnValue !== "undefined"
. Open to suggestionsThere was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have gone back and used
typeof this.returnValue !== "undefined"
as methods such as returnsThis don't setreturnValueDefined