Tôi đã theo dõi this great article để tham gia Kiểm tra đơn vị về Dữ liệu lõi. Các thiết lập có vẻ đơn giản và chỉ liên quan đến một số dòng xem mã.Làm thế nào tôi có thể yêu cầu MagicalRecord không sử dụng Dữ liệu cốt lõi dựa trên tệp nhưng trong thiết lập bộ nhớ?
- (void)setUp;
{
[MagicalRecord setDefaultModelWithClass:[self class]];
[MagicalRecord setupCoreDataStackWithInMemoryStore];
}
- (void)tearDown;
{
[MagicalRecord cleanUp];
}
- (void)testSomeCalculationOnMyEntity;
{
NSNumber *count = [MyEntity MR_numberOfEntities];
// STAssert([testEntity customCalculation] == expectedValue, @"expected a good calculation");
}
@end
Vấn đề là, rằng mỗi khi tôi ví dụ séc cho số tiền của các tổ chức trong trong bộ nhớ thiết lập của Core Data bằng cách gọi [MyEntity MR_numberOfEntities]
(như trên), tôi nhận được tiền của các đối tượng, trong đó được lưu trữ trong thiết lập dựa trên tệp là một vài nghìn đối tượng. Điều này xảy ra như thế nào? Tôi có nghĩa là dòng thứ hai trong setUp
cho biết trong một bộ nhớ, phải không? Và trường hợp này sẽ trả về 0 là số lượng đối tượng được lưu trữ.
Cảm ơn mọi đề xuất!
Edit:
@casademora đưa tôi đi đúng hướng. Các thiết lập công trình sau đây hoạt động tốt cho tôi ngay bây giờ.
- (void)setUp;
{
[MagicalRecord cleanUp]; // This solved the mystery.
// I don't now why I had to remove this line, though.
// [MagicalRecord setDefaultModelWithClass:[self class]];
[MagicalRecord setupCoreDataStackWithInMemoryStore];
}
- (void)tearDown;
{
[MagicalRecord cleanUp];
}
- (void)testSomeCalculationOnMyEntity;
{
NSNumber *count = [MyEntity MR_numberOfEntities];
// STAssert([testEntity customCalculation] == expectedValue, @"expected a good calculation");
}
@end
Cảm ơn câu trả lời của bạn. Bài kiểm tra tôi đang chạy là bài kiểm tra duy nhất. Mục tiêu của các Bài kiểm tra của tôi phụ thuộc vào Mục tiêu của Đơn đăng ký của tôi. Trong AppdDelegate của tôi, tôi thiết lập ngăn xếp dữ liệu cốt lõi để sử dụng một tệp. Nó có thể được rằng một trong những này được nạp trước khi thử nghiệm, và rằng nó được sử dụng do đó thay vì mới trong bộ nhớ một? Nếu có, tôi làm cách nào để tránh điều này? – Aufwind
Cảm ơn bạn đã cho tôi đi đúng hướng. Tôi đã giải quyết bí ẩn này bằng cách gọi '[MagicalRecord cleanUp];' ngay trước khi '[MagicalRecord setupCoreDataStackWithInMemoryStore];' trong phương thức '- (void) setUp;'. Tôi đã phải loại bỏ '[MagicalRecord setDefaultModelFromClass: [self class]];'. Xem chỉnh sửa của tôi về câu hỏi. – Aufwind
Chà, điều đó không cần thiết ... gọi cleanUp trong phương thức tearDown là đủ rồi. Điều này khá kỳ quặc. – casademora