I am staring to use OCMockito for Unit Testing. Right now I am using it to mock a UserDefaults(through dependency injection).
I can control what is returned back by:
  [given([mockUserDefaults objectForKey:@"some key"]) willReturn:@"a value I want"];
Now my question is: How do I check what values the user set to the mock UserDefaults?
for example, if user issued:
  [self.userDefaults setObject:[NSDate date] forKey:"example"];
How do I get the date back from the mock userDefaults?
 
                        
OCMockito doesn't have a way (yet) to capture and return arguments. Instead, each argument must satisfy an OCHamcrest matcher. If no matcher is specified, then
equalTois assumed.Testing
[NSDate date]is generally not a good idea in unit tests, because you have no control over the date. But for the sake of example, here's a verification that the argument is any NSDate. (sutis the "system under test".)So here, the first matcher is
instanceOfto match any NSDate.The second matcher is implicitly
equalTo(@"example)Update:
OCMockito 1.1.0 has a way to capture arguments, using MKTArgumentCaptor:
You can retrieve the captured argument with
[argument value], or an array of all captured arguments with[argument allValues].