Allow for keyword function mocking #393
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.
Spent some more time looking at how
provided
handles mocks with nested expressions and realized that it isn't handling keyword functions (i.e(:a-num {:a-num 1})
), as brought up in #389.Currently when an expression is used as an argument in a
provided
statement, Midje does not evaluate that expression, but rather only mocks function calls with those that exact expression as an argument. For example:works, but if we do some partial evaluation in our test statement, the test fails:
This is a trade-off in test framework expressiveness that makes sense.
When we apply this to keyword functions, Midje fails here due to the fact that the fnref classification function doesn't handle keywords.
This prevents us from doing things like
Addresses #362 and #281