Moq 4.20.72
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
No packages depend on Moq.
https://github.com/moq/moq/blob/main/changelog.md
.NET Framework 4.6.2
- Castle.Core (>= 5.1.1)
- System.Threading.Tasks.Extensions (>= 4.5.4)
.NET Standard 2.0
- Castle.Core (>= 5.1.1)
- System.Threading.Tasks.Extensions (>= 4.5.4)
.NET Standard 2.1
- Castle.Core (>= 5.1.1)
.NET 6.0
- Castle.Core (>= 5.1.1)
Version | Downloads | Last updated |
---|---|---|
4.20.72 | 12 | 09/07/2024 |
4.20.70 | 15 | 11/30/2023 |
4.20.69 | 17 | 09/08/2023 |
4.18.4 | 40 | 05/11/2023 |
4.18.3 | 37 | 05/21/2023 |
4.18.2 | 1,072 | 08/24/2022 |
4.18.1 | 19 | 06/27/2022 |
4.18.0 | 27 | 08/22/2022 |
4.17.2 | 64 | 09/08/2022 |
4.17.1 | 65 | 09/10/2022 |
4.16.1 | 2,544 | 06/27/2022 |
4.16.0 | 27 | 09/02/2022 |
4.15.2 | 65 | 09/09/2022 |
4.15.1 | 99 | 08/23/2022 |
4.14.7 | 24 | 09/08/2022 |
4.14.6 | 28 | 09/07/2022 |
4.14.5 | 87 | 09/08/2022 |
4.14.4 | 47 | 09/09/2022 |
4.14.3 | 23 | 09/10/2022 |
4.14.2 | 84 | 08/23/2022 |
4.14.1 | 43 | 09/08/2022 |
4.14.0 | 53 | 09/08/2022 |
4.13.1 | 93 | 09/08/2022 |
4.13.0 | 71 | 09/08/2022 |
4.12.0 | 71 | 09/08/2022 |
4.11.0 | 42 | 09/03/2022 |
4.11.0-rc2 | 61 | 09/07/2022 |
4.11.0-rc1 | 15 | 09/04/2022 |
4.10.1 | 67 | 09/08/2022 |
4.10.0 | 83 | 09/09/2022 |
4.9.0 | 39 | 09/08/2022 |
4.8.3 | 83 | 09/04/2022 |
4.8.2 | 30 | 09/09/2022 |
4.8.1 | 55 | 08/25/2022 |
4.8.0 | 27 | 09/09/2022 |
4.8.0-rc1 | 56 | 09/07/2022 |
4.7.145 | 30 | 09/02/2022 |
4.7.142 | 35 | 09/07/2022 |
4.7.137 | 35 | 09/07/2022 |
4.7.127 | 55 | 09/09/2022 |
4.7.99 | 52 | 08/21/2022 |
4.7.63 | 51 | 09/07/2022 |
4.7.58 | 19 | 09/07/2022 |
4.7.49 | 66 | 09/09/2022 |
4.7.46 | 84 | 09/08/2022 |
4.7.25 | 84 | 09/08/2022 |
4.7.12 | 88 | 09/07/2022 |
4.7.11 | 94 | 09/08/2022 |
4.7.10 | 41 | 09/07/2022 |
4.7.9 | 16 | 09/08/2022 |
4.7.8 | 52 | 08/22/2022 |
4.7.7 | 34 | 09/09/2022 |
4.7.1 | 58 | 09/07/2022 |
4.7.0 | 42 | 09/09/2022 |
4.6.62-alpha | 34 | 09/08/2022 |
4.6.39-alpha | 30 | 09/11/2022 |
4.6.38-alpha | 13 | 09/04/2022 |
4.6.36-alpha | 82 | 09/08/2022 |
4.6.25-alpha | 18 | 09/07/2022 |
4.5.30 | 44 | 09/03/2022 |
4.5.29 | 34 | 08/21/2022 |
4.5.28 | 17 | 09/04/2022 |
4.5.23 | 36 | 09/09/2022 |
4.5.22 | 63 | 09/08/2022 |
4.5.21 | 64 | 09/03/2022 |
4.5.20 | 19 | 09/02/2022 |
4.5.19 | 36 | 09/07/2022 |
4.5.18 | 59 | 09/08/2022 |
4.5.16 | 45 | 09/08/2022 |
4.5.13 | 77 | 09/08/2022 |
4.5.10 | 32 | 09/03/2022 |
4.5.9 | 37 | 09/08/2022 |
4.5.9-alpha | 73 | 09/08/2022 |
4.5.8 | 75 | 09/09/2022 |
4.5.7 | 57 | 09/07/2022 |
4.5.7-alpha | 25 | 08/23/2022 |
4.5.6-alpha | 24 | 09/08/2022 |
4.5.3 | 71 | 09/08/2022 |
4.5.0 | 31 | 09/09/2022 |
4.2.1510.2205 | 55 | 09/03/2022 |
4.2.1507.118 | 118 | 09/02/2022 |
4.2.1506.2515 | 37 | 09/08/2022 |
4.2.1506.2016 | 32 | 09/08/2022 |
4.2.1502.911 | 24 | 09/09/2022 |
4.2.1409.1722 | 68 | 09/08/2022 |
4.2.1408.717 | 68 | 08/24/2022 |
4.2.1408.619 | 32 | 09/08/2022 |
4.2.1402.2112 | 20 | 09/03/2022 |
4.2.1312.1622 | 93 | 09/09/2022 |
4.2.1312.1621 | 82 | 09/10/2022 |
4.2.1312.1615 | 40 | 09/07/2022 |
4.2.1312.1416 | 91 | 09/05/2022 |
4.2.1312.1323 | 34 | 08/21/2022 |
4.2.1312.1319 | 68 | 09/03/2022 |
4.1.1311.615 | 66 | 08/25/2022 |
4.1.1309.1617 | 43 | 09/08/2022 |
4.1.1309.919 | 39 | 08/23/2022 |
4.1.1309.801 | 30 | 09/08/2022 |
4.1.1309.800 | 76 | 09/02/2022 |
4.1.1308.2321 | 89 | 09/07/2022 |
4.1.1308.2316 | 53 | 09/08/2022 |
4.1.1308.2120 | 28 | 09/03/2022 |
4.0.10827 | 42 | 09/03/2022 |
3.1.416.3 | 70 | 09/07/2022 |