Simple stubbing for Objective-C
Objective-C Ruby
Switch branches/tags
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
Specs
Stubbilino.xcodeproj
Stubbilino.xcworkspace
Stubbilino
CONTRIBUTORS
Info.plist
LICENSE
Podfile
Podfile.lock
README.md
Stubbilino.podspec

README.md

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.