Moq 4.20.0-beta

The most popular and friendly mocking library for .NET

  var mock = new Mock<ILoveThisLibrary>();

  // WOW! No record/replay weirdness?! :)
  mock.Setup(library => library.DownloadExists("2.0.0.0"))
      .Returns(true);

  // Use the Object property on the mock to get a reference to the object
  // implementing ILoveThisLibrary, and then exercise it by calling
  // methods on it
  ILoveThisLibrary lovable = mock.Object;
  bool download = lovable.DownloadExists("2.0.0.0");

  // Verify that the given method was indeed called with the expected value at most once
  mock.Verify(library => library.DownloadExists("2.0.0.0"), Times.AtMostOnce());

Moq also is the first and only library so far to provide Linq to Mocks, so that the same behavior above can be achieved much more succinctly:

  ILoveThisLibrary lovable = Mock.Of<ILoveThisLibrary>(l =>
    l.DownloadExists("2.0.0.0") == true);

  // Exercise the instance returned by Mock.Of by calling methods on it...
  bool download = lovable.DownloadExists("2.0.0.0");

  // Simply assert the returned state:
  Assert.True(download);
  
  // If you want to go beyond state testing and want to 
  // verify the mock interaction instead...
  Mock.Get(lovable).Verify(library => library.DownloadExists("2.0.0.0"));

You can think of Linq to Mocks as "from the universe of mocks, give me one whose behavior matches this expression".

Check out the Quickstart for more examples!

Sponsors Sponsors

Special thanks to the following gold sponsors of this project:

Supported by Amazon Web Services Supported by Clarius

And to all our sponsors!

Clarius Org C. Augusto Proiete Kirill Osenkov MFB Technologies, Inc. SandRock Andy Gocke Stephen Shaw Torutek

No packages depend on Moq.

https://github.com/moq/moq/blob/main/changelog.md

.NET Framework 4.6.2

.NET Standard 2.0

.NET Standard 2.1

.NET 6.0

Version Downloads Last updated
4.20.72 36 09/07/2024
4.20.71 30 09/04/2024
4.20.70 1,598 12/06/2023
4.20.69 38 08/24/2023
4.20.2 40 08/15/2023
4.20.1 44 08/22/2023
4.20.0 39 08/22/2023
4.20.0-rc 34 08/11/2023
4.20.0-beta 33 09/30/2023
4.20.0-alpha 37 09/29/2023
4.18.4 48 01/18/2023
4.18.3 39 07/02/2023
4.18.2 40 10/26/2022
4.18.1 46 06/07/2022
4.18.0 44 07/06/2022
4.17.2 43 06/30/2023
4.17.1 43 06/29/2023
4.16.1 46 11/20/2021
4.16.0 39 07/02/2023
4.15.2 46 03/21/2021
4.15.1 37 07/24/2022
4.14.7 34 06/28/2023
4.14.6 45 04/28/2023
4.14.5 35 06/30/2023
4.14.4 39 07/05/2022
4.14.3 39 06/29/2023
4.14.2 44 11/04/2022
4.14.1 39 06/29/2023
4.14.0 39 06/28/2023
4.13.1 44 06/29/2023
4.13.0 40 07/02/2023
4.12.0 41 06/28/2023
4.11.0 40 07/01/2023
4.11.0-rc2 36 07/01/2023
4.11.0-rc1 37 07/02/2023
4.10.1 56 07/28/2022
4.10.0 49 06/28/2022
4.9.0 39 07/20/2022
4.8.3 38 07/04/2023
4.8.2 41 06/29/2023
4.8.1 39 07/01/2023
4.8.0 51 07/06/2022
4.8.0-rc1 36 07/02/2023
4.7.145 38 11/12/2022
4.7.142 42 08/08/2022
4.7.137 38 05/30/2023
4.7.127 39 06/29/2023
4.7.99 33 06/30/2023
4.7.63 33 07/04/2022
4.7.58 64 07/02/2023
4.7.49 35 06/29/2023
4.7.46 36 06/29/2023
4.7.25 41 09/10/2022
4.7.12 43 01/31/2023
4.7.11 35 06/28/2023
4.7.10 44 08/09/2022
4.7.9 38 08/26/2022
4.7.8 43 07/09/2022
4.7.7 39 06/27/2023
4.7.1 46 07/05/2022
4.7.0 59 07/02/2023
4.6.62-alpha 38 07/02/2023
4.6.39-alpha 42 08/17/2022
4.6.38-alpha 38 07/07/2022
4.6.36-alpha 38 07/07/2023
4.6.25-alpha 45 08/26/2022
4.5.30 62 07/10/2022
4.5.29 69 06/22/2022
4.5.28 58 12/21/2021
4.5.23 36 06/29/2023
4.5.22 45 09/19/2022
4.5.21 36 06/27/2022
4.5.20 35 07/02/2023
4.5.19 36 10/08/2022
4.5.18 35 06/30/2023
4.5.16 44 07/03/2022
4.5.13 36 06/30/2023
4.5.10 38 06/29/2023
4.5.9 41 08/13/2022
4.5.9-alpha 34 07/07/2023
4.5.8 45 06/27/2023
4.5.7 44 12/02/2022
4.5.7-alpha 36 07/08/2023
4.5.6-alpha 36 06/27/2023
4.5.3 39 06/29/2023
4.5.0 35 07/01/2023
4.2.1510.2205 38 08/12/2022
4.2.1507.118 40 06/27/2023
4.2.1506.2515 51 07/12/2022
4.2.1506.2016 39 07/02/2023
4.2.1502.911 40 07/03/2023
4.2.1409.1722 38 07/02/2023
4.2.1408.717 52 07/03/2023
4.2.1408.619 36 06/30/2023
4.2.1402.2112 45 08/03/2022
4.2.1312.1622 36 07/01/2023
4.2.1312.1621 38 07/02/2023
4.2.1312.1615 39 07/01/2023
4.2.1312.1416 39 08/02/2022
4.2.1312.1323 40 06/24/2022
4.2.1312.1319 37 07/08/2023
4.1.1311.615 37 07/28/2022
4.1.1309.1617 42 08/30/2022
4.1.1309.919 38 10/11/2022
4.1.1309.801 46 07/01/2023
4.1.1309.800 38 03/17/2023
4.1.1308.2321 41 08/08/2022
4.1.1308.2316 38 09/01/2022
4.1.1308.2120 42 07/02/2023
4.0.10827 67 07/03/2023
3.1.416.3 34 07/02/2023