/Stubbilino

Simple stubbing for Objective-C

Primary LanguageObjective-CMIT LicenseMIT

Stubbilino

Simple stubbing for Objective-C

NSObject<SBStub> *stub = [Stubbilino stubObject:[[NSObject alloc] init]];

[stub stubMethod:@selector(description)
       withBlock:^{ return @"Stubbilino is awesome!"; }];

expect(stub.description).to.equal(@"Stubbilino is awesome!");

Getting started

Stubbilino allows you to selectively stub methods on an object, if you don't provide a stub, the default implementation will be used.

UITableViewController *viewcontroller = [[UITableViewController alloc] init];
UITableViewCell *myCell = [[UITableViewCell alloc] init];

UITableViewController<SBStub> *stub = (id)[Stubbilino stubObject:viewcontroller];

[stub stubMethod:@selector(numberOfSectionsInTableView:)
       withBlock:^{ return 1; }];

[stub stubMethod:@selector(tableView:numberOfRowsInSection:)
       withBlock:^{ return 1; }];

[stub stubMethod:@selector(tableView:cellForRowAtIndexPath:)
       withBlock:^{ return myCell; }];

[viewcontroller.tableView reloadData];

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];

id cell = [viewcontroller.tableView cellForRowAtIndexPath:indexPath];

expect(cell).to.equal(myCell);

You can also remove the stubs once you're done.

[stub removeStub:@selector(numberOfSectionsInTableView:)];

Alternatively, you can also unstub the object, returning it to its original state.

[Stubbilino unstubObject:stub];

Class Methods

Class methods can also be stubbed.

Class<SBClassStub> uiimage = [Stubbilino stubClass:UIImage.class];

[uiimage stubMethod:@selector(imageNamed:)
          withBlock:^(NSString *name) { return myImage; }];

Make sure to unstub the classes once you're done.

[Stubbilino unstubClass:uiimage];

License

Copyright (c) 2013 Robert Böhnke. This software is licensed under the MIT License.