Release Notes

Version 4.3* Added support for Roslyn* Automatically add implemented interfaces to mock

Version 4.2* Improved support for async APIs by making default value a completed task* Added support for async Returns and Throws* Improved mock invocation sequence testing* Improved support for multi-threaded tests* Added support for named mocks

* Implemented Issue #55: We now provide a mock.DefaultValue = [DefaultValue.Empty | DefaultValue.Mock] which will provide the current behavior (default) or mocks for mockeable return types for loose mock invocations without expectations.* Added support for stubbing properties from moq-contrib: now you can do mock.Stub(m => m.Value) and add stub behavior to the property. mock.StubAll() is also provided. This integrates with the DefaultValue behavior too, so you can stub entire hierarchies :).* Added support for mocking methods with out and ref parameters (Issue #50)* Applied patch contributed by slava for Issue #72: add support to limit numbor of calls on mocked method (we now have mock.Expect(...).AtMost(5))* Implemented Issue #94: Easier setter verification: Now we support ExpectSet(m = m.Value, "foo") and VerifySet(m = m.Value, 5) (Thanks ASP.NET MVC Team!)* Implemented issue #96: Automatically chain mocks when setting expectations. It's now possible to specify expectations for an entire hierarchy of objects just starting from the root mock. THIS IS REALLY COOL!!!* Fixed Issue #89: Expects() does not always return last expectation* Implemented Issue 91: Expect a method/property to never be called (added Never() method to an expectation. Can be used on methods, property getters and setters)* Fixed Issue 86: IsAny<T> should check if the value is actually of type T* Fixed Issue 88: Cannot mock protected internal virtual methods using Moq.Protected* Fixed Issue 90: Removing event handlers from mocked objects* Updated demo and added one more test for the dynamic addition of interfaces

Version 2.5

* Added support for mocking protected members* Added new way of extending argument matchers which is now very straightforward* Added support for mocking events* Added support for firing events from expectations* Removed usage of MBROs which caused inconsistencies in mocking features* Added ExpectGet and ExpectSet to better support properties, and provide better intellisense.* Added verification with expressions, which better supports Arrange-Act-Assert testing model (can do Verify(m => m.Do(...)))* Added Throws<TException>* Added mock.CallBase property to specify whether the virtual members base implementation should be called* Added support for implementing and setting expectations and verifying additional interfaces in the mock, via the new mock.As<TInterface>() method (thanks Fernando Simonazzi!)* Improved argument type matching for Is/IsAny (thanks Jeremy.Skinner!)

Version 2.0

* Refactored fluent API on mocks. This may cause some existing tests to fail, but the fix is trivial (just reorder the calls to Callback, Returns and Verifiable)* Added support for retrieving a Mock<T> from a T instance created by a mock.* Added support for retrieving the invocation arguments from a Callback or Returns.* Implemented AtMostOnce() constraint * Added support for creating MBROs with protected constructors* Loose mocks now return default empty arrays and IEnumerables instead of nulls

Version 1.5.1

* Refactored MockFactory to make it simpler and more explicit to use with regards to verification. Thanks Garry Shutler for the feedback!

Version 1.5

* Added MockFactory to allow easy construction of multiple mocks with the same behavior and verification

* Added support for overriding expectations set previously on a Mock. Now adding a second expectation for the same method/property call will override the existing one. This facilitates setting up default expectations in a fixture setup and overriding when necessary in a specific test. * Added support for mock verification. Both Verify and VerifyAll are provided for more flexibility (the former only verifies methods marked Verifiable)

Version 1.2

* Added support for MockBehavior mock constructor argument to affect the way the mocks expect or throw on calls.

Version 1.1

* Merged branch for dynamic types. Now Moq is based on Castle DynamicProxy2 to support a wider range of mock targets.* Added ILMerge so that Castle libraries are merged into Moq assembly (no need for external references and avoid conflicts)