4

我正在尝试从第 16 章运行以下测试:使用 Raywenderlich RxSwift书的RxTest 进行测试:

import XCTest
import RxSwift
import RxTest
@testable import Testing

class TestingViewModel : XCTestCase {

var viewModel: ViewModel!
var scheduler: ConcurrentDispatchQueueScheduler!

override func setUp() {
super.setUp()

viewModel = ViewModel()
scheduler = ConcurrentDispatchQueueScheduler(qos: .default)
}

func testColorNameIsRayWenderlichGreenWhenHexStringIs006636() {

// 1
let colorNameObservable = viewModel.colorName.asObservable().subscribeOn(scheduler)

// 2
viewModel.hexString.value = "#006636"

// 3
XCTAssertEqual("rayWenderlichGreen", try! colorNameObservable.toBlocking().first()!)
 }
}

但我在模拟器上得到这个错误:

架构 x86_64 的未定义符号:“RxCocoa.DriverSharingStrategy 的类型元数据”,引用自:TestingTests.TestingViewModel.testColorNameIsRayWenderlichGreenWhenHexStringIs006636() -> () in TestingViewModel.o“RxCocoa.DriverSharingStrategy 的协议见证表:RxCocoa 中的 RxCocoa.SharingStrategyProtocol”,引用来自:TestingTests.TestingViewModel.testColorNameIsRayWenderlichGreenWhenHexStringIs006636() -> () in TestingViewModel.o "RxCocoa.SharedSequence.asObservable() -> RxSwift.Observable",引用自:TestingTests.TestingViewModel.testColorNameIsRayWenderlichGreenWhenHexStringIs006636() -> () in TestingViewModel.o ld:未找到架构 x86_64 的符号 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

iPhone 6s 上的这个:

架构 arm64 的未定义符号:“RxCocoa.DriverSharingStrategy 的类型元数据”,引用自:TestingTests.TestingViewModel.testColorNameIsRayWenderlichGreenWhenHexStringIs006636() -> () in TestingViewModel.o“RxCocoa.DriverSharingStrategy 的协议见证表:RxCocoa 中的 RxCocoa.SharingStrategyProtocol”,引用来自:TestingTests.TestingViewModel.testColorNameIsRayWenderlichGreenWhenHexStringIs006636() -> () in TestingViewModel.o "RxCocoa.SharedSequence.asObservable() -> RxSwift.Observable",引用自:TestingTests.TestingViewModel.testColorNameIsRayWenderlichGreenWhenHexStringIs006636() -> () in TestingViewModel.o ld:未找到架构 arm64 的符号 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

不幸的是,Raywenderlich 的论坛中没有对此问题的支持。

4

1 回答 1

3

经过大量搜索,正如有人在这里建议的另一个类似问题,我发现这个错误将通过导入来解决RxCocoa

于 2018-05-22T10:39:24.410 回答