我有一个和UIViewController
一个。该数组将成为 UITableView 的数据源。我正在尝试为此视图控制器创建测试并且遇到了困难。设置断点并单步执行,属性为. 我确实打电话,在。这是我的代码和要遵循的解释:UITableView
NSMutableArray
UITableView
null
viewDidLoad
viewWillAppear
setUp
@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");
}
- 分配并初始化视图控制器。它使用 NIB 文件,但该实现隐藏在
-init
. - 创建人员对象并将 2 IOU 对象添加到该人员。
- 我将该人添加到
iouTableArray
作为UITableView
. 获取一UITableView
组人员并将它们显示在视图中。 - Calls
viewDidLoad
等并设置delegate
(正确?) - 通话
testViewDidLoad
通行证 - 打电话
testCustomCell
。创建一个NSIndex
将从UITableView
.CustomCell
子类 the并且UITableViewCell
具有属性personName
as aUILabel
。
回顾代码,我应该调用cell.personName.text
来获取名称字符串。但是,我得到的错误cell.personName
是null
. 逐步浏览,我看到iouTableView = (UITableView *) 0x00000000
我认为意味着 null 的内容。
我能做些什么来测试我的细胞UITableView
并让它发挥作用?
PS:我做了一些阅读,有很多关于模拟对象的材料。它们看起来很复杂,但如果必须,我会学习它。是否有 Apple 推荐的方式来做我想做的事?
谢谢。