我正在使用XCTest
和OCMock
的組合來測試iOS應用程序。我正在使用UITableViewController
來呈現一系列我希望爲其編寫測試的原型單元格。單元格本身在故事板中,所以我不相信我可以從筆尖實例化它。有沒有什麼辦法從故事板實例化原型UITableViewCell進行測試?
是使用使用電池初始化它viewController
唯一的選擇?
我使用的自定義單元格類有很多的「IBOutlets」連接到原型的故事板。 Cell類看起來是這樣的:
@interface QRFeedAdCell : UITableViewCell
@property (strong, nonatomic) IBOutlet UIImageView *mainImageView;
@property (strong, nonatomic) IBOutlet UIImageView *blurredImageView;
@property (strong, nonatomic) IBOutlet UILabel *titleLabel;
@property (strong, nonatomic) IBOutlet UIButton *someButton;
@property (strong, nonatomic) IBOutlet UILabel *someLabel;
@property (strong, nonatomic) IBOutlet UILabel *anotherLabel;
@property (nonatomic) BOOL isBusy;
@end
我試着使用實例的[[QRFeedAdCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"feedAdCell"];
細胞,但將加載細胞與所有設置爲無屬性的。
我也試着註冊了電池,但測試也失敗:
id mockTableView = [OCMockObject niceMockForClass:[UITableView class]];
[mockTableView registerClass:[QRFeedAdCell class] forCellReuseIdentifier:@"feedAdCell"];
QRFeedAdCell *cell = [mockTableView dequeueReusableCellWithIdentifier:@"feedAdCell"];
XCTAssertNotNil(cell, @"");
XCTAssertNotNil(cell.mainImageView, @"");
這就是我雖然,我嘗試了更多的東西,但這似乎是唯一的解決方案。謝謝。 – psobko