gliyao
4/9/2017 - 1:14 PM

LCTableViewTests

LCTableViewTests

@interface LCTableViewTests : XCTestCase
@end

@implementation LCTableViewTests

//驗證 OCMock Stub method 本身
- (void)testOCMockStubMethod
{
    //Arrange
    id protocolMock = OCMProtocolMock(@protocol(UITableViewDataSource));
    OCMStub([protocolMock numberOfSectionsInTableView:OCMOCK_ANY]).andReturn(1);
    OCMStub([protocolMock tableView:OCMOCK_ANY numberOfRowsInSection:0]).andReturn(40);
    OCMStub([protocolMock tableView:OCMOCK_ANY cellForRowAtIndexPath:OCMOCK_ANY]).andReturn(nil);
    
    XCTAssertEqual([protocolMock numberOfSectionsInTableView:OCMOCK_ANY], 1);
    XCTAssertEqual([protocolMock tableView:OCMOCK_ANY numberOfRowsInSection:0], 40);
    XCTAssertNil([protocolMock tableView:OCMOCK_ANY cellForRowAtIndexPath:OCMOCK_ANY]);
}

// 透過 Stubs 輔助驗證 UITableViewDataSource 的正確性
- (void)testTableViewDataSourceNumberOfRowsInSecitonWithStub
{
    //Arrange
    id protocolMock = OCMProtocolMock(@protocol(UITableViewDataSource));
    OCMStub([protocolMock numberOfSectionsInTableView:OCMOCK_ANY]).andReturn(1);
    OCMStub([protocolMock tableView:OCMOCK_ANY numberOfRowsInSection:0]).andReturn(40);
    OCMStub([protocolMock tableView:OCMOCK_ANY cellForRowAtIndexPath:OCMOCK_ANY]).andReturn(nil);
    UITableView *tableView = [[UITableView alloc] init];
    tableView.dataSource = protocolMock;
    
    //Act
    [tableView reloadData];
    
    //Assert
    NSInteger rowCount = [tableView numberOfRowsInSection:0];
    XCTAssertEqual(rowCount, 40);
}

@end