首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kiwi + MagicalRecord方法不存在

Kiwi + MagicalRecord方法不存在
EN

Stack Overflow用户
提问于 2013-05-03 04:59:05
回答 2查看 387关注 0票数 0

我正在使用Kiwi框架通过Magical记录库测试我的代码和核心数据之间的交互。Magical record在NSManagedObject上定义了一个类别,它添加了一些很好的方法,比如MR_createInContext:(NSManagedObjectContext *)context。我正在尝试测试是否调用了该方法,以及调用了多少次。

代码语言:javascript
复制
it(@"should create new object for me object with new id", ^{
    [[[NSManagedObjectContext MR_contextForCurrentThread] should] receive:@selector(MR_createInContext:)];
    Me *me = [Me meWithID:@"12345" inContext:[NSManagedObjectContext MR_contextForCurrentThread]];
    [me shouldNotBeNil];
    [[me.idNumber should] equal:@"12345"];
});

问题是,新西兰人似乎看不到这一类别,尽管

代码语言:javascript
复制
#import <CoreData+MagicalRecord.h>

在测试.m文件中。

ME_ShouldCreateNewObjectForMeObjectWithNewId (EHMeSpecs)失败:“”me“”应为具有新id的me对象创建新对象“”失败,无法存根-MR_createInContext:因为不存在此类方法

我怎样才能让Kiwi知道这个类别呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-03 05:33:58

显然这个方法是在一个类而不是NSManagedObjectContext上定义的,它应该说[Me类应该] NSManagedObject ...是我的错。

票数 0
EN

Stack Overflow用户

发布于 2013-05-03 05:24:44

看着你的测试的名字,我猜你的意图是验证核心数据工作,为你创建一个新的托管对象,并有一个适当的ObjectID。我不认为有必要知道奇异果现在应该如何拦截类别之类的东西。我会简单地这样写你的测试:

代码语言:javascript
复制
it(@"should create a new object", ^{

    NSManagedObjectContext *testContext = [NSManagedObjectContext MR_context];
    id myObject = [MyEntity createWithStuff:@{...} inContext:testContext];

    assertThat(myObject, isNot(nil));
    assertThat([myObject someAttrbiute], is(equalTo(@"some value")));
});

不要担心测试类别是否工作,因为对于这个测试,它无论如何都是在隐式地测试。如果此测试失败,您很快就会知道该类别不起作用。

我的测试规则之一是“不要测试语言或框架”。当您测试某个类别是否正常工作时,您违反了这条规则,并且测试了其他人最有可能测试过的东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16347616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档