在构建测试目标期间未导入 Cocoapod

Cocoapod not being imported during build for test target

我会先说这个解决方案可能非常简单,但我已经尝试了几个小时来解决这个问题,我觉得它很接近,但仍然有问题。

我正在创建一个 Cocoapod,它有一些其他 pods 作为依赖项,我正在尝试设置项目/目标以工作,但 运行 遇到了 Cocoapod 依赖项的问题我正在尝试加载 PusherSwift.swiftimport Alamofire 等)失败。

这是回购的 link:https://github.com/hamchapman/pusher-swift-test

谁能看出为什么没有加载 pod 框架以便它们可以在 PusherSwift.swift 文件中使用?

具体来说,我正在尝试 运行(默认)测试,但它一直失败说:

No such module Alamofire

注意,我使用的是:

好吧,我现在通过在 PusherSwift 项目中添加 Pods 项目使其工作。我不完全确定为什么它会起作用,但它基本上似乎只是使框架可用于 PusherSwift 目标。

默认情况下,Cocoapods 仅 link 指向项目中的第一个目标。第二个目标,通常是您的单元测试,未被 linked。 http://guides.cocoapods.org/syntax/podfile.html#link_with

使用 Podfile 中的 link_with 配置明确 link pods 到您的单元测试目标。例如

link_with 'MyApp', 'MyAppTests'

这是一个愚蠢的答案,但它有效。

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'
use_frameworks!

target 'Echo' do
    pod 'Alamofire'
    pod 'AFNetworking'
    pod 'Google/Analytics'
    pod 'Google/AppInvite'
    pod 'Appirater'
    pod 'FDTake'
    pod 'MBProgressHUD'
    pod 'TDBadgedCell'
    pod 'FDWaveformView'
    pod 'SwiftyJSON'
end

target 'EchoTests' do
    pod 'Alamofire'
    pod 'AFNetworking'
    pod 'Google/Analytics'
    pod 'Google/AppInvite'
    pod 'Appirater'
    pod 'FDTake'
    pod 'MBProgressHUD'
    pod 'TDBadgedCell'
    pod 'FDWaveformView'
    pod 'SwiftyJSON'
end

我确定有更好的方法,但我找不到!

做这样的事情:

target 'Echo' do
    pod 'Alamofire'
    pod 'AFNetworking'
    pod 'Google/Analytics'
    pod 'Google/AppInvite'
    pod 'Appirater'
    pod 'FDTake'
    pod 'MBProgressHUD'
    pod 'TDBadgedCell'
    pod 'FDWaveformView'
    pod 'SwiftyJSON'

    target 'EchoTests' do
        inherit! :search_paths
    end
end

这使得测试目标具有主要目标所具有的所有 pods,但您仍然可以定义一些测试依赖项,例如模拟或存根 pods