Theo NSManagedObjectContext Class Documentation ...Core Data Testing Unit - Không chắc chắn làm thế nào để kích hoạt trường hợp lỗi trong executeFetchRequest: lỗi:
- (NSArray *)executeFetchRequest:(NSFetchRequest *)request error:(NSError **)error
Return Value
An array of objects that meet the criteria specified by request fetched from the receiver and from the persistent stores associated with the receiver’s persistent store coordinator. If an error occurs, returns nil. If no objects match the criteria specified by request, returns an empty array.
Tôi đang cố gắng để tạo ra một thử nghiệm đơn vị cho tình hình "nếu một lỗi xảy ra, trả về nil. "
Tôi muốn tránh xa việc sử dụng OCMock (hoặc phân lớp NSManagedObjectContext để ghi đè phương thức executeFetchRequest: error:) bởi vì tôi có một cách dễ dàng để đảm bảo lỗi của phương thức này. Cho đến nay thử nghiệm đơn vị của tôi đã đọc ...
- (void)testReportingCoreDataErrorToDelegate
{
NSManagedObjectContext *badContext = [[NSManagedObjectContext alloc] init];
[bcc setManagedObjectContext:badContext];
[bcc fetchFromCoreData];
STAssertTrue([mockDelegate didReceiveCoreDataError], @"This never asserts, it fails because the fetch request couldn't find an entity name - i.e. no managed object model");
}
Có cách nào đơn giản để kích hoạt yêu cầu tìm nạp trở lại không?
Rất thông minh! Tôi tò mò tại sao bạn không phân lớp 'NSManagedObjectContext' và ghi đè' executeFetchRequest: error: '. Đó là giải pháp duy nhất tôi đã đưa ra bởi vì tôi đã không tìm ra cách để lôi kéo hữu cơ trường hợp lỗi. Subclassing plus ghi đè bên trái tôi với cách tiếp cận hơi rõ ràng hơn (mặc dù có giới hạn hơn). – edelaney05
Tôi không phân lớp trực tiếp ngữ cảnh vì không có dữ liệu nào trong dữ liệu chính dễ dàng như vậy. [NSManagedObjectContext executeFetchRequest: error] được xử lý bởi [NSPersistentStoreCoordinator executeRequest: withContext: error:] xử lý [NSPersistentStore executeRequest: withContext: error:] trên tất cả các cửa hàng hiện tại. Bạn có thể nhận thấy rằng từ "tìm nạp" giảm khi bạn di chuyển đến điều phối viên - lưu và tìm nạp các yêu cầu được xử lý bởi cùng phương thức executeRequest: withContext: error :. Vì vậy, tôi nhận được bảo hiểm để thử nghiệm chống lại lỗi lưu và tìm nạp yêu cầu bằng cách xác định ErrorProneStore. –
Cảm ơn sự thấu hiểu! – edelaney05