我有一个测试,我想加载一个UICollectionViewCell(CustomCollectionViewCell
),传递一些数据并检查是否用这些数据更新了单元格的标签。
cell.nameLabel
是单元格的UILabel,方法setText
被调用,但文本本身永远不会更新。
cell.nameLabel.text
始终返回xib中定义的初始文本。
标签定义如下:
@property (nonatomic, weak) IBOutlet UILabel *nameLabel;
规范:
SPEC_BEGIN(CustomCollectionViewCellSpec)
describe(@"CustomCollectionViewCell", ^{
__block CustomCollectionViewCell *cell = nil;
__block CustomCollectionViewCellData *cellData = nil;
beforeEach(^{
NSArray *objects = [[NSBundle mainBundle] loadNibNamed:@"CustomCollectionViewCell"
owner:self
options:nil];
for (id object in objects) {
if ([object isKindOfClass:[CustomCollectionViewCell class]]) {
cell = (CustomCollectionViewCell *)object;
break;
}
}
cellData = [[CustomCollectionViewCellData alloc] init];
cellData.name = @"Custom name";
});
afterEach(^{
cell = nil;
cellData = nil;
});
it(@"should populate the views with the cell data", ^{
[[cell.nameLabel should] receive:@selector(setText:)
withArguments:cellData.name];
[cell configureWithCellData:cellData];
[[cell.cellData should] equal:cellData];
[[cell.nameLabel.text should] equal:cellData.name];
});
});
SPEC_END
答案 0 :(得分:0)
问题是你是如何创建单元格的。 你不能为init分配一个单元格或获取nib。你问一个集合。
对于您需要的藏品:
UICollectionView *collection = [[UICollectionView alloc] init];
UICollectionCell *cell = [collection dequeueReusableCellWithReuseIdentifier:@"yourCellIdentifier" forIndexPath:0];
在此之后,您将能够获取您的单元格并对其进行修改,而不将其所有属性作为nil属性。