diff --git a/Moq.nuspec b/Moq.nuspec index d6a1b4b3e..cf8f2a37a 100644 --- a/Moq.nuspec +++ b/Moq.nuspec @@ -11,5 +11,153 @@ false The most popular and friendly mocking framework for .NET tdd mocking mocks unittesting agile + 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 (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{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. \ No newline at end of file diff --git a/ReleaseNotes.md b/ReleaseNotes.md index 2f3372b37..5c5ad747c 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -1,6 +1,6 @@ Version 4.1 -* Added covariant IMock interface to Mock -* Added It.IsNotNull +* 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(...) @@ -15,7 +15,7 @@ when CallBase = true. * Capability of mocking delegates (event handlers) Version 4.0 -* Linq to Mocks: Mock.Of<`T>(x => x.Id == 23 && x.Title == "Rocks!") +* 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. @@ -29,11 +29,11 @@ Version 4.0 * 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 + * 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 instead of void. + * 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 @@ -50,12 +50,12 @@ Version 4.0 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 +* 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()); +* 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 @@ -66,7 +66,7 @@ Version 3.0 * 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 +* 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 @@ -79,14 +79,14 @@ Version 3.0 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 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 #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 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 @@ -99,17 +99,17 @@ Version 2.5 * 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 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() method (thanks Fernando Simonazzi!) +* 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 from a T instance created by a mock. +* 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 diff --git a/Source/Properties/AssemblyInfo.cs b/Source/Properties/AssemblyInfo.cs index a3f896a27..7b0ec428f 100644 --- a/Source/Properties/AssemblyInfo.cs +++ b/Source/Properties/AssemblyInfo.cs @@ -9,8 +9,8 @@ [assembly: AssemblyProduct("Moq")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] -[assembly: AssemblyVersion("4.1.1308.2119")] -[assembly: AssemblyFileVersion("4.1.1308.2119")] +[assembly: AssemblyVersion("4.1.1308.2321")] +[assembly: AssemblyFileVersion("4.1.1308.2321")] [assembly: ComVisible(false)] [assembly: NeutralResourcesLanguage("en")] diff --git a/build.proj b/build.proj index 9446eb481..d3ef15e57 100644 --- a/build.proj +++ b/build.proj @@ -9,6 +9,7 @@ $(MSBuildThisFileDirectory) $(BuildRoot)build\ $(BuildRoot).nuget\NuGet.exe + $([System.IO.File]::ReadAllText('$(BuildRoot)ReleaseNotes.md')) @@ -73,6 +74,12 @@ AssemblyVersion\(".*?"\) AssemblyVersion("$(FileVersion)") + <_VersionRegexTransform Include="$(BuildRoot)**\*.nuspec" + Condition="'$(ReleaseNotes)' != ''"> + ||.*]]> + $(ReleaseNotes)]]> + Singleline +