1

我有一个和UIViewController一个。该数组将成为 UITableView 的数据源。我正在尝试为此视图控制器创建测试并且遇到了困难。设置断点并单步执行,属性为. 我确实打电话,在。这是我的代码和要遵循的解释:UITableViewNSMutableArrayUITableViewnullviewDidLoadviewWillAppearsetUp

@implementation IouViewControllerTests

- (void)setUp {
    self.iouViewController = [[IouViewController alloc] init];

    Person *person = [[Person alloc] initWithName:@"Oky" oweItems:[NSMutableArray array]];
    Iou *iouOne = [[Iou alloc] initWithType:@"lend" amount:[NSDecimalNumber one] note:@"1st iou"];
    Iou *iouTwo = [[Iou alloc] initWithType:@"lend" amount:[NSDecimalNumber one] note:@"2nd iou"];
    [person.iouList addObject:iouOne];
    [person.iouList addObject:iouTwo];

    NSMutableArray *persons = [NSMutableArray array];
    [persons addObject:person];
    self.iouViewController.iouTableArray = persons;

    [self.iouViewController viewDidLoad];
    [self.iouViewController viewWillAppear:YES];
    [self.iouViewController.iouTableView setDelegate:self];
}

- (void)tearDown {
    self.iouViewController = nil;
}

-(void)testViewDidLoad {
    STAssertNotNil(self.iouViewController.view, @"iouViewController view should not be nil");
}

- (void)testCustomCell {
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
    CustomCell *cell = (CustomCell *)[self.iouViewController.iouTableView cellForRowAtIndexPath:indexPath];
    STAssertEqualObjects(cell.personName, @"Oky", @"cell name should be right");
}
  1. 分配并初始化视图控制器。它使用 NIB 文件,但该实现隐藏在-init.
  2. 创建人员对象并将 2 IOU 对象添加到该人员。
  3. 我将该人添加到iouTableArray作为UITableView. 获取一UITableView组人员并将它们显示在视图中。
  4. CallsviewDidLoad等并设置delegate(正确?)
  5. 通话testViewDidLoad通行证
  6. 打电话testCustomCell。创建一个NSIndex将从UITableView. CustomCell子类 the并且UITableViewCell具有属性personNameas a UILabel

回顾代码,我应该调用cell.personName.text来获取名称字符串。但是,我得到的错误cell.personNamenull. 逐步浏览,我看到iouTableView = (UITableView *) 0x00000000我认为意味着 null 的内容。

我能做些什么来测试我的细胞UITableView并让它发挥作用?

PS:我做了一些阅读,有很多关于模拟对象的材料。它们看起来很复杂,但如果必须,我会学习它。是否有 Apple 推荐的方式来做我想做的事?

谢谢。

4

0 回答 0