标签: cedar-bdd

测试核心数据应用

我该如何测试findByAttribute我添加NSManagedObject实例方法

起初,我想过以编程方式创建一个独立的Core Data堆栈,如Xcode的Core Data Utility Tutorial所示.而且,在我搜索该文档时,我遇到了核心数据获取请求模板,并认为可能不是创建我创建的方法,而是应该创建获取请求模板,但它看起来不像是entityName可以使用fetch变量请求模板,可以吗?我可以创建一个获取请求模板,NSManagedObject以便所有子类都可以使用它吗?嗯,但是我仍然需要一个entityName,我不认为有一种方法可以动态获取调用该方法的子类的名称.

无论如何,看起来一个好的解决方案是创建一个内存核心数据堆栈进行测试,独立于生产核心数据堆栈.@Jeff Schilling还建议创建一个内存持久性存储.Chris Hanson还创建了一个持久存储协调器来对Core Data进行单元测试.这看起来类似于Rails如何有一个单独的数据库进行测试.但是,@iamleeg建议删除Core Data依赖项.

您认为哪种方法更好?我个人更喜欢后者.

更新:我正在使用OCHamcrest和Pivotal Lab的Cedar对核心数据进行单元测试.除了写下面的代码,我添加NSManagedObject+Additions.mUser.mSpec目标.

#define HC_SHORTHAND
#import <Cedar-iPhone/SpecHelper.h>
#import <OCHamcrestIOS/OCHamcrestIOS.h>

#import "NSManagedObject+Additions.h"
#import "User.h"

SPEC_BEGIN(NSManagedObjectAdditionsSpec)

describe(@"NSManagedObject+Additions", ^{
    __block NSManagedObjectContext *managedObjectContext;   

    beforeEach(^{
        NSManagedObjectModel *managedObjectModel =
                [NSManagedObjectModel mergedModelFromBundles:nil];

        NSPersistentStoreCoordinator *persistentStoreCoordinator =
                [[NSPersistentStoreCoordinator alloc]
                 initWithManagedObjectModel:managedObjectModel];

        [persistentStoreCoordinator addPersistentStoreWithType:NSInMemoryStoreType
                                                 configuration:nil URL:nil options:nil error:NULL]; …
Run Code Online (Sandbox Code Playgroud)

unit-testing core-data objective-c ocmock cedar-bdd

5
推荐指数
1
解决办法
1581
查看次数

命名空间'std'中没有名为'shared_ptr'的类型

希望这有助于其他人

尝试使用Cedar BDD编译iOS项目时,在命名空间"std"错误消息中没有名为"shared_ptr"的类型时失败.这显然是一个C++错误,但无法理解为什么C++库Xcode正在使用didn; t已经定义了shared_ptr类型,直到我发现目标的构建设置提供了两个库可供选择

  • libstdc ++(编译器默认)
  • 的libc ++

bdd xcode shared-ptr cedar-bdd

4
推荐指数
1
解决办法
7460
查看次数