Moq is the most popular and friendly mocking framework for .NET
See the version list below for details.
Install-Package Moq -Version 4.5.16
dotnet add package Moq --version 4.5.16
<PackageReference Include="Moq" Version="4.5.16" />
paket add Moq --version 4.5.16
#r "nuget: Moq, 4.5.16"
// Install Moq as a Cake Addin #addin nuget:?package=Moq&version=4.5.16 // Install Moq as a Cake Tool #tool nuget:?package=Moq&version=4.5.16
* Updated to .NET 4.5
* Dropped support for .NET < 4.5 and Silverlight
* Remove ILMerge. Depend on Castle NuGet package instead.
* Added support for Roslyn
* Automatically add implemented interfaces to mock
* 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
* 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)
* 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
* 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.)
* 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
* 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!)
* 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
* Refactored MockFactory to make it simpler and more explicit to use with regards to verification. Thanks Garry Shutler for the feedback!
* Added MockFactory to allow easy construction of multiple mocks with the same behavior and verification
* Added support for passing constructor arguments for mocked classes.
* Improved code documentation
* 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)
* Added support for MockBehavior mock constructor argument to affect the way the mocks expect or throw on calls.
* 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)
* Initial release, initial documentation process in place, etc.
- Castle.Core (>= 3.3.3)
NuGet packages (546)
Showing the top 5 NuGet packages that depend on Moq:
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
Autofac extension for automocking and creation of mock objects in Moq.
An auto-mocking container that generates mocks using 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.
Automock implementation for Moq using Ninject to create the objects under test.
GitHub repositories (806)
Showing the top 5 popular GitHub repositories that depend on Moq:
Windows system utilities to maximize productivity
Launcher for Windows, an alternative to Alfred and Launchy.
Cross-platform .NET sample microservices and container based application that runs on Linux Windows and macOS. Powered by .NET 5, Docker Containers and Azure Kubernetes Services. Supports Visual Studio, VS for Mac and CLI based environments with Docker CLI, dotnet CLI, VS Code or any other code editor.
The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.
.NET Decompiler with support for PDB generation, ReadyToRun, Metadata (&more) - cross-platform!