gpt4 book ai didi

具有核心数据/MagicalRecord 意外行为的 iOS 单元测试

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:23:13 26 4
gpt4 key购买 nike

我得到了如下测试代码。

@interface SubscriberTest : XCTestCase

@end

@implementation SubscriberTest

- (void)setUp
{
[super setUp];
[MagicalRecord setDefaultModelFromClass:[self class]];
[MagicalRecord setupCoreDataStackWithInMemoryStore];

}


- (void)tearDown
{
[super tearDown];
[MagicalRecord cleanUp];
}

- (void)testParseSubscriberWithEvents
{
NSEntityDescription *pDesc = [NSEntityDescription entityForName:@"Subscriber"
inManagedObjectContext:[NSManagedObjectContext MR_defaultContext]];
XCTAssertNotNil(pDesc);


- (void)testParseSubscriberWithReviews
{
NSEntityDescription *pDesc = [NSEntityDescription entityForName:@"Subscriber"
inManagedObjectContext:[NSManagedObjectContext MR_defaultContext]];
XCTAssertNotNil(pDesc);

}

@结束

我不明白为什么第一个测试总是成功而第二个总是失败..就像每个测试都在创建自己的 ManagedObjectContext,但第二个测试不知道我的实体...实际上这段代码是用来测试json数据的导入的。调试了MagicalRecord的代码,发现问题出在方法

[NSEntityDescription entityForName: inManagedObjectContext:]

在第二个测试中返回 nil...

我试着评论第一个测试,第二个测试成功了!但是如果他们是两个测试,那么第二个每次都会失败......

有关信息,我正在使用 MagicalRecord 2.3.0.beta(因为 2.2 importFromObject 方法中存在一些错误...)任何帮助和解释将不胜感激!

最佳答案

看起来在第一次测试后 -tearDown 破坏了 CoreData 栈,出于某种原因下次调用 -setUp 时 MagicalRecord 没有正确初始化 Core Data 栈(你发现第二次上下文为 nil)导致你的第二次测试失败.我发现如果您设置一次核心数据堆栈(您可以通过在 -setUp 中调用 dispatch_once 来实现)并在 -tearDown 中调用 [Subscriber MR_truncateAll] 它确实有效。

关于具有核心数据/MagicalRecord 意外行为的 iOS 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23759485/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com