如果我从情节提要中的标识符中取出一个单元格,我如何以单元测试的方式调用 cellForRowAtIndexPath 并且不让单元格为零?
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
MyCustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kCustomCell];
cell.guestNameText.text = self.details.guestName;
return cell;
}
不起作用,在调用 dequeReusableCell 并且单元格为 nil 之后在上面放置一个断点:
ETA:更新的工作代码以通过测试:
- (void)setUp {
[super setUp];
_detailVC_SUT = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]
instantiateViewControllerWithIdentifier:kDetailsVC];
_myService = [OCMockObject niceMockForClass:[MyService class]];
_detailVC_SUT.service = _myService;
}
- (void)test_queryForDetailsSucceeded_should_set_cell_text_fields {
[_detailVC_SUT view]; // <--- Need to load the view for this to work
Details *details = [DetailsBuilder buildStubDetails];
[_detailVC_SUT queryForDetailsSucceededWithDetails:details];
[self getFirstCellForGuestName];
}
- (void)getFirstCellForGuestName {
MyCustomTableViewCell *guestNameCell = (MyCustomTableViewCell*)[_detailVC_SUT tableView:_detailVC_SUT.detailsTableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
expect(guestNameCell.guestNameText.text).to.equal(@"Mark");
}