01 Oct 2022
Fixes:
- Restores Carthage build. #169 Thanks to: Christian Tietze
Other:
- Restores "year of first publication" in copyright notices
13 Mar 2022
Fixes:
- Keep stubs working while verifying. #165 Thanks to: Damian Ferrai
24 Nov 2021
OCMockito now requires OCHamcrest v9.0.0 or higher.
Features:
- Add support for Swift Package Manager. Thanks to: nrudnyk
- Add Mac Catalyst to XCFramework-supported architectures in build script
makeXCFramework.sh
Fixes:
- Prevent false positives from verifying while stubbing. Thanks to: Damian Ferrai
19 Feb 2021
Features:
-
Packaged pre-built binary as single XCFramework containing 7 architectures:
- macOS
- iOS device
- iOS simulator
- tvOS device
- tvOS simulator
- watchOS device
- watchOS simulator
Note:
- iOS projects that use the pre-built binary should now import OCMockito instead of OCMockitoIOS.
- macOS projects should remove OCMockito from the Copy Files build phase.
- For Carthage builds, specify --use-xcframeworks
Thanks to: Mateusz Szklarek
-
Mac binary now supports Apple Silicon.
-
Use latest OCHamcrest to report mismatches using XCTIssue if using Xcode 12 or higher.
-
Simplified project settings. In particular:
- Removed iOS Static Library target.
- Removed iOS-specific test target.
- Simplified Product Bundle Identifiers.
01 Jan 2020
Fixes:
- Don't require clang module import.
24 Sep 2019
Improvements:
- For building, update OCHamcrest to v7.1.2 to quiet warnings.
11 Sep 2018
Improvements:
- Remove .gitkeep from Carthage folder.
29 Mar 2018
Features:
- Made OCMockito/OCMockitoIOS into modules, so you can
@import
them. CocoaPods users should specifyuse_frameworks!
22 Sep 2017
Fixes:
- Fixed new warnings from Xcode 9.
12 Aug 2017
OCMockito now requires OCHamcrest v7.0.0 or higher.
Features:
- Added
isKindOfClass:
to class-and-protocol mocks. Thanks to: Kylan McBride - Support protocol class methods. Thanks to: Kylan McBride
Fixes:
- Avoid potential problem iterating over mutable array. Thanks to: David Siebecker
- Fixed nullability annotation mistakes.
19 Feb 2017
Improvements:
- Adopt latest Objective-C annotations for designated initializers, unavailable initializers, typed arrays, nullability.
11 Sep 2016
Improvements:
- Improved reliability of stubSingleton. Thanks to: Igor Sales
08 Sep 2016
OCMockito now requires OCHamcrest v6.0.0 or higher. (Actually, it only needs v5.4.0 but v6.0.0 is better for CocoaPods/Carthage users.)
Features:
- Added
stubSingleton(…)
. "A patch for the rest of us, who know it's easier to live with the reality that singletons are here to stay." Thanks to: Igor Sales
Fixes:
- Prevent argument captor from capturing values twice.
- Prevent over-releasing mock object that is stubbed as return value for copy method.
- Fixed crash comparing literals to mocked protocols.
- Fixed crash describing collection containing mocked protocol.
Project changes:
- Increased deployment targets to OS X 10.9, iOS 8.0.
25 Jun 2016
Fixes:
- Fixed race condition when stubbed method is called from multiple threads. Thanks to: brianvanderwal
- Add transitive imports to OCMockito.h to satisfy new umbrella header requirements.
- Significantly speed up mock creation time. Thanks to: rcgroot
Features:
- Added Carthage support for Mac, iOS, watchOS and tvOS. Thanks to: Nikolaj Schumacher
27 Dec 2015
Improvements:
- Improved filtering of call stack to skip past XCTest frames.
- Don't consider previously verified invocations when finding similar invocations.
- When printing invocations, mark previously verified invocations with check marks.
21 Dec 2015
Compatibility-breaking Changes:
- The semantics for repeated verification have changed. Call counts used to always accumulate:
…something that invokes someMethod…
[verifyCount(myMock, times(1)) someMethod];
…another thing that invokes someMethod…
[verifyCount(myMock, times(2)) someMethod];
But now, verification counts only the matches since the last verification.
- OCMockito now requires OCHamcrest v5.1.0 or higher, which also potentially breaks compatibility.
Features:
- Instead of enabling short syntax by defining MOCKITO_SHORTHAND, short syntax is now enabled by default. To disable it, #define MKT_DISABLE_SHORT_SYNTAX.
- Previously verified invocations are no longer considered for verification.
- Report additional information about verification failures:
- If the number of matches is incorrect, report a filtered call stack of the first bad invocation or the last good invocation.
- If there were no matches, but there was a call to the expected method, report it. Describe the mismatched arguments along with a filtered call stack.
- If there were no matches, but there were other calls to the mock, report them with call stacks.
- If there were no matches, and in fact that mock received no calls, say so.
Fixes:
- Fixed
atMost(0)
Deleted:
MKTCapturingMatcher
(deprecated in 2.0.1)
06 Nov 2015
Project changes:
- Enabling "Symbols hidden by default" in 2.0.2 was overkill, preventing people from using the prebuilt Mac framework.
24 Oct 2015
Project changes:
- Remove debug symbols from Release configuration, which bloated the libraries and kept folks from using the prebuilt iOS framework.
14 Oct 2015
Compatibility-breaking Change:
- Eliminated
reset(mock)
sincereset
was likely to clash with mocked methods. CallstopMocking(mock)
instead.
Fixes:
- Fixed crash when multiple mock objects are at play on multiple threads.
Features:
- Stub void methods with
givenVoid(…)
. Thanks to: Lysann Schlegel - Added
atMost(count)
forverifyCount()
. Thanks to: Emile Cantin
Improvements:
- Use
stopMocking(…)
if a-dealloc
of your System Under Test is trying to message an object that is mocked. It disables message handling on the mock and frees its retained arguments. This prevents retain cycles and crashes during test clean-up. See StopMockingTests.m for an example. - NSInvocation+OCMockito.h is now imported by OCMockito.h, so it no longer needs a separate import.
Deprecated:
- Deprecated MKTCapturingMatcher; use HCArgumentCaptor from OCHamcrest for capturing arguments. There is no need to call -capture to get a matcher to use as the argument, since HCArgumentCaptor is a matcher.
Project changes:
- Updated project settings to Xcode 7, with tests now run by XCTest.
04 Jan 2015
Features:
- Stub sequential returns by chaining
willReturn:
. - Stub throwing exceptions with
willThrow:
. - Stub execution of a block with
willDo:
. - Added support for dynamic properties. Thanks to Eugen Martynov for example code
- Added
mockProtocolWithoutOptionals(…)
which mocks an object implementing a given protocol, but without mocking any optional methods. Thanks to: Paweł Dudek
Improvements:
- Updated project to make it run-path dependent.
27 Sep 2014
TPWeakProxy changes:
- Updated to from TPWeakProxy to TPDWeakProxy.
- Directly include a renamed copy to simplify non-CocoaPod builds. Don't call the script Frameworks/getweakproxy anymore.
04 Jun 2014
This version requires OCHamcrest 4.0.1. TPWeakProxy 1.0.0 is also needed to build OCMockito.
- To build OCMockito without CocoaPods, execute two scripts:
- Frameworks/gethamcrest
- Frameworks/getweakproxy
Fixes:
- Fix
mockClass
crash on 64-bit runtime (OS X and iOS). - Fixed retain cycle between mocks and tests. The fix addresses most but not all cases. If the
-dealloc
of your System Under Test is not called when you nil out your SUT, call-reset
on your mock object (probably fromtearDown
). Thanks to ronak2121 for testing
Features:
- Stub methods that return structs with
willReturnStruct:objCType:
. Thanks to GWStuartClift and Yaron Inger stubProperty(instance, property, value)
stubs a property, and its relatedgetValueForKey:
andvalueForKeyPath:
KVO methods. Thanks to: Sasha Zats
Project changes:
- Increased deployment targets to OS X 10.8, iOS 6.0.
05 Apr 2014
If you're not using CocoaPods, please specify -ObjC
in your "Other Linker Flags".
Fixes:
- Fix crash capturing nil selectors as method parameters. Thanks to: Sergio Padrino
- Fix crash capturing inline blocks as method parameters. Thanks to: Sergio Padrino
- Fix crash returning BOOL on 64-bit iOS. Thanks to: Ullrich Schäfer
Features:
- Added support for pointer arguments, including
NSError **
. - Added support for struct arguments. Thanks to: César Estébanez Tascón
Improvements:
- To build OCMockito without CocoaPods, execute the script Frameworks/gethamcrest first to get the latest OCHamcrest release.
30 Oct 2013
Features:
- Added MKTArgumentCaptor to capture arguments:
- Use
capture
to capture the argument. This must be used inside of verification. - Use
value
to return the captured value. - Use
allValues
to return an array of all captured values.
- Use
Improvements:
- Changed mock object factory methods to cast to
(id)
to eliminate AppCode warnings. - Added support for 64-bit iOS devices.
- Convert primitive arguments to objects using NSInvocation+OCMockito by Taras Kalapun.
Examples & Documentation:
- Updated examples so they are based on Apple's templates for main target vs. test target. Added CocoaPods examples.
- Eliminated DocSet. Documentation will be in the main README and in the OCMockito wiki, https://github.com/jonreid/OCMockito/wiki/_pages
06 Sep 2013
This release adopts Semantic Versioning (http://semver.org). Thanks to: Jens Nerup
New dependencies:
- Requires OCHamcrest 3.0.0.
Features:
- Added support for XCTest. Special thanks to Richard Clem for testing
- Added ability to match block arguments. Supported matchers:
anything()
nilValue()
notNilValue()
sameInstance()
- Added
-description
to mock objects to help when debugging.
23 Nov 2012
- Added
atLeast(count)
andatLeastOnce()
forverifyCount()
. Thanks to: Markus Gasser - Handle Class as both argument type and return type. Thanks to: David Hart
- Added support for
-isKindOfClass:
to object mocks. Thanks to: Tim Pesce - No more need to specify "Other Linker Flags"! Depending on your project, you may be able to
eliminate:
-lstdc++
-ObjC
- Converted source, tests, and examples to ARC
18 Mar 2012
- Added
mockClass(…)
which mocks a class object. Thanks to: David Hart - Added
mockObjectAndProtocol(Class, Protocol)
which mocks an object of a given class that also implements a given protocol. Thanks to: Kevin Lundberg
09 Mar 2012
- Added
mockProtocol(…)
which mocks an object implementing a given protocol. given(…)
now supports methods returning float or double. Thanks to: Markus Gasser
verify(…)
andverifyCount(…)
check that argument is a mock object.- Eliminated
givenPreviousCall
. - Changed build configuration to Debug during initial development.
24 Nov 2011 prerelease