【发布时间】:2014-10-02 16:20:56
【问题描述】:
我有一个仅包含 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 的覆盖 - 编译器没有问题。显然,当我的模拟对象运行时,我需要覆盖函数才能在单元测试中返回我需要的值。
【问题讨论】:
-
我没有意识到你可以将一个类型嵌套在另一个类型的方法中。疯了。