Moq 4.7.0

Moq is the most popular and friendly mocking framework for .NET

No packages depend on Moq.

Version 4.5

  • Updated to .NET 4.5
  • Dropped support for .NET < 4.5 and Silverlight
  • Remove ILMerge. Depend on Castle NuGet package instead.

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

Version 4.1

  • Added covariant IMock interface to Mock
  • Added It.IsNotNull
  • Fix: 'NullReferenceException when subscribing to an event'
  • Added overloads to Verify to accept Times as a Method Group
  • Feature request: It.IsIn(..), It.IsNotIn(...)
  • Corrected Verify method behavior for generic methods calls
  • Differentiate verification error from mock crash
  • Fix: Adding (and removing) handlers for events declared on interfaces works when CallBase = true.
  • Update to latest Castle
  • Fix: Mock.Of (Functional Syntax) doesn't work on properties with non-public setters
  • Fix: Allow to use CallBase instead of Returns
  • Fix: Solved Multi-threading issue - IndexOutOfRangeException
  • Capability of mocking delegates (event handlers)

Version 4.0

  • Linq to Mocks: Mock.Of(x => x.Id == 23 && x.Title == "Rocks!")
  • Fixed issues:
    • 87 BadImageFormatException when using a mock with a Visual Studio generated Accessor object
    • 166 Unable to use a delegate to mock a function that takes 5 or more parameters.
    • 168 Call count failure message never says which is the actual invocation count
    • 175 theMock.Object failing on VS2010 Beta 1
    • 177 Generic constraint on interface method causes BadImageFormatException when getting Object.
    • 183 Display what invocations were recieved when the expected one hasn't been met
    • 186 Methods that are not virtual gives non-sense-exception message
    • 188 More Callback Overloads
    • 199 Simplify SetupAllProperties implementation to simply iterate and call SetupProperty
    • 200 Fluent mock does not honor parent mock CallBase setting.
    • 202 Mock.Protected().Expect() deprecated with no work-around
    • 204 Allow default return values to be specified (per-mock)
    • 205 Error calling SetupAllProperties for Mock
    • 206 Linq-to-Mocks Never Returns on Implicit Boolean Property
    • 207 NullReferenceException thrown when using Mocks.CreateQuery with implicit boolean expression
    • 208 Can't setup a mock for method that accept lambda expression as argument.
    • 211 SetupAllProperties should return the Mock instead of void.
    • 223 When a method is defined to make the setup an asserts mock fails
    • 226 Can't raise events on mocked Interop interfaces
    • 229 CallBase is not working for virtual events
    • 238 Moq fails to mock events defined in F#
    • 239 Use Func instead of Predicate
    • 250 4.0 Beta 2 regression - cannot mock MethodInfo when targetting .NET 4
    • 251 When a generic interface also implements a non-generic version, Verify does not work in some cases
    • 254 Unable to create mock of EnvDTE.DTE
    • 261 Can not use protected setter in public property
    • 267 Generic argument as dependency for method Setup overrides all previous method setups for a given method
    • 273 Attempting to create a mock thrown a Type Load exception. The message refers to an inaccessible interface.
    • 276 .Net 3.5 no more supported

Version 3.0

  • Silverlight support! Finally integrated Jason's Silverlight contribution! Issue #73
  • Brand-new simplified event raising syntax (#130): mock.Raise(foo => foo.MyEvent += null, new MyArgs(...));
  • Support for custom event signatures (not compatible with EventHandler): mock.Raise(foo => foo.MyEvent += null, arg1, arg2, arg3);
  • Substantially improved property setter behavior: mock.VerifySet(foo => foo.Value = "foo"); //(also available for SetupSet
  • Renamed Expect* with Setup*
  • Vastly simplified custom argument matchers: public int IsOdd() < return Match.Create(v => i % 2 == 0); >
  • Added support for verifying how many times a member was invoked: mock.Verify(foo => foo.Do(), Times.Never());
  • Added simple sample app named StoreSample
  • Moved Stub functionality to the core API (SetupProperty and SetupAllProperties)
  • Fixed sample ASP.NET MVC app to work with latest version
  • Allow custom matchers to be created with a substantially simpler API
  • Fixed issue #145 which prevented discrimination of setups by generic method argument types
  • Fixed issue #141 which prevented ref arguments matching value types (i.e. a Guid)
  • Implemented improvement #131: Add support for It.IsAny and custom argument matchers for SetupSet/VerifySet
  • Implemented improvement #124 to render better error messages
  • Applied patch from David Kirkland for improvement #125 to improve matching of enumerable parameters
  • Implemented improvement #122 to provide custom errors for Verify
  • Implemented improvement #121 to provide null as default value for Nullable
  • Fixed issue #112 which fixes passing a null argument to a mock constructor
  • Implemented improvement #111 to better support params arguments
  • Fixed bug #105 about improperly overwriting setups for property getter and setter
  • Applied patch from Ihar.Bury for issue #99 related to protected expectations
  • Fixed issue #97 on not being able to use SetupSet/VerifySet if property did not have a getter
  • Better integration with Pex (http://research.microsoft.com/en-us/projects/Pex/)
  • Various other minor fixes (#134, #135, #137, #138, #140, etc.)

Version 2.6

  • 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 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
  • 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() 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 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

Version 1.4

  • Added support for passing constructor arguments for mocked classes.
  • Improved code documentation

Version 1.3

  • 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)

Version 1.0

  • Initial release, initial documentation process in place, etc.

Version Downloads Last updated
4.20.72 1 10/06/2024
4.20.70 0 11/28/2023
4.20.69 0 08/11/2023
4.18.4 0 12/30/2022
4.18.3 0 12/05/2022
4.18.2 0 08/02/2022
4.18.1 0 05/16/2022
4.18.0 0 05/11/2022
4.17.2 0 03/06/2022
4.17.1 0 02/26/2022
4.16.1 0 02/23/2021
4.16.0 0 01/16/2021
4.15.2 0 11/26/2020
4.15.1 0 11/10/2020
4.14.7 0 10/14/2020
4.14.6 0 09/30/2020
4.14.5 1 10/06/2024
4.14.4 0 06/24/2020
4.14.3 0 06/18/2020
4.14.2 0 06/16/2020
4.14.1 0 04/28/2020
4.14.0 0 04/24/2020
4.13.1 0 10/19/2019
4.13.0 0 08/31/2019
4.12.0 1 10/06/2024
4.11.0 0 05/27/2019
4.11.0-rc2 0 05/27/2019
4.11.0-rc1 0 04/19/2019
4.10.1 0 12/03/2018
4.10.0 0 09/08/2018
4.9.0 0 07/13/2018
4.8.3 0 06/09/2018
4.8.2 0 02/23/2018
4.8.1 0 01/08/2018
4.8.0 0 12/24/2017
4.8.0-rc1 0 12/08/2017
4.7.145 0 11/06/2017
4.7.142 0 10/10/2017
4.7.137 0 10/03/2017
4.7.127 0 09/25/2017
4.7.99 0 07/17/2017
4.7.63 0 06/21/2017
4.7.58 0 06/20/2017
4.7.49 0 06/18/2017
4.7.46 0 06/18/2017
4.7.25 0 06/02/2017
4.7.12 0 05/30/2017
4.7.11 0 05/30/2017
4.7.10 0 05/06/2017
4.7.9 0 04/29/2017
4.7.8 0 03/26/2017
4.7.7 0 03/25/2017
4.7.1 0 02/28/2017
4.7.0 1 10/06/2024
4.6.62-alpha 0 02/21/2017
4.6.39-alpha 0 02/18/2017
4.6.38-alpha 0 08/20/2016
4.6.36-alpha 0 07/20/2016
4.6.25-alpha 0 06/06/2016
4.5.30 0 01/09/2017
4.5.29 0 12/10/2016
4.5.28 0 11/10/2016
4.5.23 0 10/11/2016
4.5.22 0 09/20/2016
4.5.21 0 08/12/2016
4.5.20 0 08/12/2016
4.5.19 0 08/10/2016
4.5.18 0 08/10/2016
4.5.16 0 07/18/2016
4.5.13 0 07/11/2016
4.5.10 0 06/21/2016
4.5.9 0 06/09/2016
4.5.9-alpha 0 05/22/2016
4.5.8 0 05/26/2016
4.5.7 0 05/26/2016
4.5.7-alpha 0 05/22/2016
4.5.6-alpha 0 05/22/2016
4.5.3 0 05/25/2016
4.5.0 0 05/24/2016
4.2.1510.2205 0 10/22/2015
4.2.1507.118 0 07/01/2015
4.2.1506.2515 0 06/25/2015
4.2.1506.2016 0 06/20/2015
4.2.1502.911 0 02/09/2015
4.2.1409.1722 0 09/17/2014
4.2.1408.717 0 08/07/2014
4.2.1408.619 0 08/06/2014
4.2.1402.2112 0 02/21/2014
4.2.1312.1622 0 12/17/2013
4.2.1312.1621 0 12/16/2013
4.2.1312.1615 0 12/16/2013
4.2.1312.1416 0 12/14/2013
4.2.1312.1323 0 12/14/2013
4.2.1312.1319 0 12/13/2013
4.1.1311.615 0 11/18/2013
4.1.1309.1617 0 09/16/2013
4.1.1309.919 0 09/09/2013
4.1.1309.801 0 09/08/2013
4.1.1309.800 0 09/08/2013
4.1.1308.2321 0 08/23/2013
4.1.1308.2316 0 08/23/2013
4.1.1308.2120 0 08/21/2013
4.0.10827 0 02/09/2011
3.1.416.3 0 02/09/2011