Added
- New method overloads for
It.Is
,It.IsIn
, andIt.IsNotIn
that compare values using a customIEqualityComparer<T>
(@weitzhandler, #1064) - New properties
ReturnValue
andException
onIInvocation
to query recorded invocations return values or exceptions (@MaStr11, #921, #1077) - Support for "nested" type matchers, i.e. type matchers that appear as part of a composite type (such as
It.IsAnyType[]
orFunc<It.IsAnyType, bool>
). Argument match expressions likeIt.IsAny<Func<It.IsAnyType, bool>>()
should now work as expected, whereas they previously didn't. In this particular example, you should no longer need a workaround like(Func<It.IsAnyType, bool>)It.IsAny<object>()
as originally suggested in #918. (@stakx, #1092)
Changed
- Event accessor calls (
+=
and-=
) now get consistently recorded inMock.Invocations
. This previously wasn't the case for backwards compatibility withVerifyNoOtherCalls
(which got implemented before it was possible to check them usingVerify{Add,Remove}
). You now need to explicitly verify expected calls to event accessors prior toVerifyNoOtherCalls
. Verification of+=
and-=
now works regardless of whether or not you set those up (which makes it consistent with how verification usually works). (@80O, @stakx, #1058, #1084) - Portable PDB (debugging symbols) are now embedded in the main library instead of being published as a separate NuGet symbols package (`.snupkg) (@kzu, #1098)
Fixed
SetupProperty
fails if property getter and setter are not both defined in mocked type (@stakx, #1017)- Expression tree argument not matched when it contains a captured variable – evaluate all captures to their current values when comparing two expression trees (@QTom01, #1054)
- Failure when parameterized
Mock.Of<>
is used in query comprehensionfrom
clause (@stakx, #982)