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

标签 swift xcode6

我有一个仅包含 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/

相关文章:

ios - 为什么我的委托(delegate)函数 didReceive Data 没有在 Swift 中被调用?

swift - 为什么 Swift 给出的浮点运算结果不准确?

ios - 如何使 SwrevealViewController 的 viewDidLoad 仅调用一次

ios - 在 3D 中使线条变粗?

objective-c - 如何在 Objective-C 中使用 Swift 字符串枚举?

ios - 如何测试 SKPaymentTransactionStateDeferred?

ios - CoreData删除单个对象

swift - 未保存核心数据关系数据

ios - xcode iOS 增加UIButton点击区域

swift - 我正在按照刚刚为 Swift 发布的 CS193p 讲座创建一个计算器应用程序。如何将 Pi 实现为操作数 & 和运算?