1

我在 Xcode 5 上使用 Cocoapods 设置 OCMockito(和 OCHamcrest)时遇到问题。这是我的 Podfile:

platform :ios, '5.0' 
pod 'RestKit', '~> 0.20.0'
pod 'OCMockito', '~> 1.0.0'
link_with ['WeatherApp', 'WeatherAppTests']

当我尝试遵循 iOS 项目设置 ( https://github.com/jonreid/OCMockito#adding-ocmockito-to-your-project ) 时,Xcode 找不到此导入:

#define HC_SHORTHAND
#import <OCHamcrestIOS/OCHamcrestIOS.h>

#define MOCKITO_SHORTHAND
#import <OCMockitoIOS/OCMockitoIOS.h>

所以我试着这样做:

#define HC_SHORTHAND
#import <OCHamcrest/OCHamcrest.h>

#define MOCKITO_SHORTHAND
#import <OCMockito/OCMockito.h>

它正在工作,但我不知道这是否很好。

另外,我还有一个问题。据我了解,我将 RestKit 和 OCMockito 链接到我的主要目标和测试目标。是否可以在两个目标上链接 RestKit 但仅将 OCMockito 链接到测试目标?

在此先感谢您的帮助。

更新:

这是 Cocoapods 的 Pods.xcconfig 基因:

GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers" "${PODS_ROOT}/Headers/AFNetworking" "${PODS_ROOT}/Headers/OCHamcrest" "${PODS_ROOT}/Headers/OCMockito" "${PODS_ROOT}/Headers/RestKit" "${PODS_ROOT}/Headers/RestKit/RestKit" "${PODS_ROOT}/Headers/RestKit/RestKit/CoreData" "${PODS_ROOT}/Headers/RestKit/RestKit/Network" "${PODS_ROOT}/Headers/RestKit/RestKit/ObjectMapping" "${PODS_ROOT}/Headers/RestKit/RestKit/Support" "${PODS_ROOT}/Headers/SOCKit" "${PODS_ROOT}/Headers/TransitionKit"
OTHER_LDFLAGS = -ObjC -framework CFNetwork -framework CoreData -framework CoreGraphics -framework MobileCoreServices -framework Security -framework SystemConfiguration
PODS_ROOT = ${SRCROOT}/Pods

似乎 IOS 标头设置不正确,那么 pod 是否错误?

更新:

这是 Pods/Headers/OCMockito 的内容

Pods/Headers/OCMockito

4

2 回答 2

1

OCHamcrestIOS 仅适用于使用预构建的 iOS 框架。使用 CocoaPods 时,只需导入 OCHamcrest。

于 2013-10-22T05:16:33.050 回答
1

要在您的测试目标包而不是您的主应用程序中使用 OCHamcrest(或 OCMockito),您可以在 Podfile 中添加如下内容:

target :YourTestTarget, :exclusive => true do
    pod 'OCHamcrest',   '~> 3.0'
    pod 'OCMockito',   '~> 1.0'
    #pod 'RestKit/Testing'
end

如果您计划对您的 RestKit 映射(等)进行单元测试,那么您可能还希望在您的包中包含 RestKit/Testing。

然后你只需像这样包含它:

#define HC_SHORTHAND
#import <OCHamcrest/OCHamcrest.h>

#define MOCKITO_SHORTHAND
#import <OCMockito/OCMockito.h>

这就是你完整的 Podfile 的样子:

platform :ios, '5.1'
pod 'Appirater',    '~> 0.0.2'
pod 'FlurrySDK',    '~> 4.0.5'
pod 'RestKit',      '~> 0.21.0'
target :FooBarTests, :exclusive => true do
    #pod 'RestKit/Testing'
    pod 'OCHamcrest',   '~> 3.0'
    pod 'OCMockito',   '~> 1.0'
end
于 2013-10-30T23:14:10.650 回答