gpt4 book ai didi

swift - 具有覆盖功能的嵌套类的编译器错误 - Swift Xcode6

转载 作者:行者123 更新时间:2023-11-28 07:16:06 25 4
gpt4 key购买 nike

我有一个仅包含 Swift 代码的简单 Cocoa Touch Framework 项目。在我的单元测试类中,我想进行模拟,所以我创建了一个模拟类,它继承了我想要模拟的类型:

func testFirstClassMocking() {
class MockSecondClass: SecondClass {
var mockedResult = "My mocked value"
override func printSecondLogEntry(logEntry: String) -> String {

return mockedResult
}
}

let mock = MockSecondClass()

var firstClass = FirstClass(secondClass: mock)

let result = firstClass.printFirstLogEntry("whatever")

XCTAssertEqual("My mocked value", result);
}

这会导致一般编译器错误:

Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc failed with exit code 1

现在,当我将嵌套类从函数中取出并只嵌套在我的测试类中时 - 一切都很好。代码编译并且我的单元测试运行良好。函数中的类嵌套是不是再也不允许了?

我的 Xcode 版本:版本 6.0.1 (6A317)

编辑:另一件事 - 如果我删除 func 的覆盖 - 编译器没有问题。显然,当我的模拟对象运行时,我需要覆盖函数才能返回我在单元测试中需要的值。

最佳答案

我想您可能想知道模拟测试的以下“模拟”正在编译并通过。如果我遗漏了您的代码的某些内容,请告诉我您的问题中的内容。但是,如果我没有遗漏任何内容,那么错误的原因就是您的代码没有引起问题。希望这可以帮助您找到罪魁祸首或重新提出问题:

import XCTest

class FirstClass {

let secondClass: SecondClass

init(secondClass: SecondClass) {
self.secondClass = secondClass
}

func printFirstLogEntry(entry: String) -> String {
var fullLog = self.secondClass.printSecondLogEntry(entry)
return fullLog
}
}
class SecondClass {

func printSecondLogEntry(logEntry: String) -> String {
return logEntry
}
}

class CommandLineTests: XCTestCase {

func testFirstClassMocking() {
class MockSecondClass: SecondClass {
override func printSecondLogEntry(logEntry: String) -> String {
return logEntry
}
}

let mock = MockSecondClass()

var firstClass = FirstClass(secondClass: mock)

let result = firstClass.printFirstLogEntry("whatever")

XCTAssertEqual("whatever", result);
}
}

关于swift - 具有覆盖功能的嵌套类的编译器错误 - Swift Xcode6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26165104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com