Skip to content
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

Allow marking conditional setups as .Verifiable() once again #1121

Merged
merged 3 commits into from
Dec 29, 2020

Conversation

stakx
Copy link
Contributor

@stakx stakx commented Dec 28, 2020

Fixes #1114.

@stakx stakx added this to the 4.15.3 milestone Dec 28, 2020
While this is a step away from being able to expose a generic
`Verify(setupPredicate)` method, we need to do this for back-compat.

A future `Verify(setupPredicate)` method will simply have to have
slightly different behavior where the same predicate applies on both
the setup & invocation sides.

(This commit also removes a superfluous double predicate check.)
@stakx stakx merged commit 2794e81 into devlooped:master Dec 29, 2020
@stakx stakx deleted the verify-conditional-setups branch December 29, 2020 00:05
@stakx stakx modified the milestones: 4.15.3, 4.16.0 Jan 1, 2021
mburumaxwell pushed a commit to faluapp/falu-dotnet that referenced this pull request Jun 12, 2021
Bumps [Moq](https://github.com/moq/moq4) from 4.15.2 to 4.16.0.

#Changelog

*Sourced from [Moq's changelog](https://github.com/moq/moq4/blob/main/CHANGELOG.md).*

> ## 4.16.0 (2021-01-16)
>
> #### Added
>
> * Ability to directly set up the `.Result` of tasks and value tasks, which makes setup expressions more uniform by rendering dedicated async verbs like `.ReturnsAsync`, `.ThrowsAsync`, etc. unnecessary:
>
>    ```diff
>    -mock.Setup(x => x.GetFooAsync()).ReturnsAsync(foo)
>    +mock.Setup(x => x.GetFooAsync().Result).Returns(foo)
>    ```
>
>    This is useful in places where there currently aren't any such async verbs at all:
>
>    ```diff
>    -Mock.Of<X>(x => x.GetFooAsync() == Task.FromResult(foo))
>    +Mock.Of<X>(x => x.GetFooAsync().Result == foo)
>    ```
>
>    This also allows recursive setups / method chaining across async calls inside a single setup expression:
>
>    ```diff
>    -mock.Setup(x => x.GetFooAsync()).ReturnsAsync(Mock.Of<IFoo>(f => f.Bar == bar))
>    +mock.Setup(x => x.GetFooAsync().Result.Bar).Returns(bar)
>    ```
>
>    or, with only `Mock.Of`:
>
>    ```diff
>    -Mock.Of<X>(x => x.GetFooAsync() == Task.FromResult(Mock.Of<IFoo>(f => f.Bar == bar)))
>    +Mock.Of<X>(x => x.GetFooAsync().Result.Bar == bar)
>    ```
>
>    This should work in all principal setup methods (`Mock.Of`, `mock.Setup…`, `mock.Verify…`). Support in `mock.Protected()` and for custom awaitable types may be added in the future. (@stakx, [#1126](devlooped/moq#1126))
>
> #### Changed
>
> * Attempts to mark conditionals setup as verifiable are once again allowed; it turns out that forbidding it (as was done in [#997](devlooped/moq#997) for version 4.14.0) is in fact a regression. (@stakx, [#1121](devlooped/moq#1121))
>
> #### Fixed
>
> * Performance regression: Adding setups to a mock becomes slower with each setup (@CeesKaas, [#1110](devlooped/moq#1110))
>
> * Regression: `mock.Verify[All]` no longer marks invocations as verified if they were matched by conditional setups. (@Lyra2108, [#1114](devlooped/moq#1114))

#Commits

- [`74d5863`](devlooped/moq@74d5863) Update version to 4.16.0
- [`424fe31`](devlooped/moq@424fe31) Fix typo in changelog
- [`f48c0f4`](devlooped/moq@f48c0f4) Merge pull request [#1126](devlooped/moq#1126) from stakx/setup-task-result
- [`6f6a89d`](devlooped/moq@6f6a89d) Update the changelog
- [`66bcb21`](devlooped/moq@66bcb21) Enable `task.Result` in delegate-based setup methods
- [`42521c4`](devlooped/moq@42521c4) Add ability in `IAwaitableFactory` to create result...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

System.InvalidOperationException because of call to Verifiable in MockSequence after 4.14.0
1 participant