Stubbilino

Stubbilino is a small library I wrote to help with stubbing in Objective-C. I was looking for a block-based interface for stubbing to use together with Specta.

afterEach(^{
  [Stubbilino removeAllStubs];
});

describe(@"A user view controller", ^{
  __block XYUserViewController *viewController;

  beforeEach(^{
    viewController = [[XYUserViewController alloc] init];
  });

  it(@"should display the username", ^{
    id<SBStub> stub = [Stubbilino stubObject:viewController];

    [stub stubMethod:@selector(user) withBlock:^{
      return kXYTestUser;
    }];

    [viewController.view reloadData];

    expect(viewController.view.usernameLabel.text)
      .to.equal(kXYTestUser.username);
  });
});

You can also stub class methods, for instance, here is how to swap the default NSNotificationCenter for a custom instance.

Class<SBClassStub> stub = [Stubbilino stubClass:NSNotificationCenter.class];

[stub stubMethod:@selector(defaultCenter) withBlock:^{
  return myNotificationCenter;
}];

If you would like to give Stubbilino a try, you can find the code on GitHub.

Posted in working-on