Moq 4.5.9-alpha

Prefix Reserved
This is a prerelease version of Moq.
There is a newer version of this package available.
See the version list below for details.
dotnet add package Moq --version 4.5.9-alpha                
NuGet\Install-Package Moq -Version 4.5.9-alpha                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Moq" Version="4.5.9-alpha" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Moq --version 4.5.9-alpha                
#r "nuget: Moq, 4.5.9-alpha"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Moq as a Cake Addin
#addin nuget:?package=Moq&version=4.5.9-alpha&prerelease

// Install Moq as a Cake Tool
#tool nuget:?package=Moq&version=4.5.9-alpha&prerelease                

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

Product Compatible and additional computed target framework versions.
.NET Framework net45 is compatible.  net451 was computed.  net452 was computed.  net46 was computed.  net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

NuGet packages (845)

Showing the top 5 NuGet packages that depend on Moq:

Package Downloads
AutoFixture.AutoMoq

This extension turns AutoFixture into an Auto-Mocking Container. The mock instances are created by Moq. To use it, add the AutoMoqCustomization to your Fixture instance. Read more at http://blog.ploeh.dk/2010/08/19/AutoFixtureAsAnAutomockingContainer.aspx

Moq.AutoMock

An auto-mocking container that generates mocks using Moq

MockQueryable.Moq

Extension for mocking Entity Framework Core operations such ToListAsync, FirstOrDefaultAsync etc. When writing tests for your application it is often desirable to avoid hitting the database. The extension allows you to achieve this by creating a context – with behavior defined by your tests – that makes use of in-memory data.

Autofac.Extras.Moq

Autofac extension for automocking and creation of mock objects in Moq.

Moq.EntityFrameworkCore

Library that provides methods that will help you with mocking Entity Framework Core.

GitHub repositories (1.2K)

Showing the top 5 popular GitHub repositories that depend on Moq:

Repository Stars
microsoft/PowerToys
Windows system utilities to maximize productivity
jellyfin/jellyfin
The Free Software Media System
DevToys-app/DevToys
A Swiss Army knife for developers.
AvaloniaUI/Avalonia
Develop Desktop, Embedded, Mobile and WebAssembly apps with C# and XAML. The most popular .NET UI client technology
microsoft/semantic-kernel
Integrate cutting-edge LLM technology quickly and easily into your apps
Version Downloads Last updated
4.20.72 6,634,999 9/7/2024
4.20.70 45,472,970 11/28/2023
4.20.69 17,757,845 8/11/2023
4.18.4 73,201,183 12/30/2022
4.18.3 7,279,101 12/5/2022
4.18.2 40,814,560 8/2/2022
4.18.1 27,041,788 5/16/2022
4.18.0 1,294,083 5/11/2022
4.17.2 25,285,781 3/6/2022
4.17.1 2,323,985 2/26/2022
4.16.1 104,602,031 2/23/2021
4.16.0 18,014,457 1/16/2021
4.15.2 13,383,202 11/26/2020
4.15.1 7,713,097 11/10/2020
4.14.7 8,389,634 10/14/2020
4.14.6 3,749,589 9/30/2020
4.14.5 23,826,313 7/1/2020
4.14.4 1,992,574 6/24/2020
4.14.3 1,684,571 6/18/2020
4.14.2 1,076,946 6/16/2020
4.14.1 15,158,582 4/28/2020
4.14.0 1,351,504 4/24/2020
4.13.1 48,291,045 10/19/2019
4.13.0 11,420,092 8/31/2019
4.12.0 14,194,671 6/20/2019
4.11.0 4,916,605 5/27/2019
4.11.0-rc2 6,508 5/27/2019
4.11.0-rc1 209,345 4/19/2019
4.10.1 31,962,147 12/3/2018
4.10.0 14,291,733 9/8/2018
4.9.0 10,142,916 7/13/2018
4.8.3 5,812,761 6/9/2018
4.8.2 13,724,173 2/23/2018
4.8.1 5,539,844 1/8/2018
4.8.0 4,965,509 12/24/2017
4.8.0-rc1 54,282 12/8/2017
4.7.145 7,741,299 11/6/2017
4.7.142 2,755,868 10/10/2017
4.7.137 1,817,606 10/3/2017
4.7.127 952,818 9/25/2017
4.7.99 6,787,879 7/17/2017
4.7.63 1,787,966 6/21/2017
4.7.58 76,482 6/20/2017
4.7.49 409,740 6/18/2017
4.7.46 84,538 6/18/2017
4.7.25 1,411,233 6/2/2017
4.7.12 315,122 5/30/2017
4.7.11 7,654 5/30/2017
4.7.10 1,265,840 5/6/2017
4.7.9 445,335 4/29/2017
4.7.8 1,978,283 3/26/2017
4.7.7 29,125 3/25/2017
4.7.1 1,690,575 2/28/2017
4.7.0 15,904,437 2/22/2017
4.6.62-alpha 7,147 2/21/2017
4.6.39-alpha 14,386 2/18/2017
4.6.38-alpha 770,459 8/20/2016
4.6.36-alpha 206,381 7/20/2016
4.6.25-alpha 109,681 6/6/2016
4.5.30 4,249,238 1/9/2017
4.5.29 1,229,680 12/10/2016
4.5.28 2,117,875 11/10/2016
4.5.23 1,266,537 10/11/2016
4.5.22 864,993 9/20/2016
4.5.21 1,625,055 8/12/2016
4.5.20 11,537 8/12/2016
4.5.19 99,539 8/10/2016
4.5.18 8,377 8/10/2016
4.5.16 862,420 7/18/2016
4.5.13 204,715 7/11/2016
4.5.10 837,080 6/21/2016
4.5.9 731,959 6/9/2016
4.5.9-alpha 11,754 5/22/2016
4.5.8 716,848 5/26/2016
4.5.7 10,860 5/26/2016
4.5.7-alpha 5,440 5/22/2016
4.5.6-alpha 5,683 5/22/2016
4.5.3 1,091,347 5/25/2016
4.5.0 311,791 5/24/2016
4.2.1510.2205 8,581,944 10/22/2015
4.2.1507.118 3,079,501 7/1/2015
4.2.1506.2515 164,931 6/25/2015
4.2.1506.2016 73,581 6/20/2015
4.2.1502.911 3,385,875 2/9/2015
4.2.1409.1722 2,520,834 9/17/2014
4.2.1408.717 976,987 8/7/2014
4.2.1408.619 29,312 8/6/2014
4.2.1402.2112 2,533,530 2/21/2014
4.2.1312.1622 1,008,453 12/17/2013
4.2.1312.1621 7,525 12/16/2013
4.2.1312.1615 8,351 12/16/2013
4.2.1312.1416 22,011 12/14/2013
4.2.1312.1323 10,862 12/14/2013
4.2.1312.1319 55,297 12/13/2013
4.1.1311.615 390,623 11/18/2013
4.1.1309.1617 706,850 9/16/2013
4.1.1309.919 307,013 9/9/2013
4.1.1309.801 15,340 9/8/2013
4.1.1309.800 7,730 9/8/2013
4.1.1308.2321 911,508 8/23/2013
4.1.1308.2316 10,372 8/23/2013
4.1.1308.2120 1,994,656 8/21/2013
4.0.10827 5,529,155 2/9/2011
3.1.416.3 804,838 2/9/2011

Version 4.5
* Dropped support for .NET < 4.5 and Silverlight

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<out T> interface to Mock<T>
* Added It.IsNotNull<T>
* 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<T>(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<IDataErrorInfo>
 *  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<T> 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<int>.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<T>
* 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 (https://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<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

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.