swift - 如何测试所需的初始化(编码器 :)?

标签 swift unit-testing xcode7.1beta

在我的自定义类 WLNetworkClient 中,我必须实现这样的方法:

required init(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}

我不需要使用它,但我想测试它以实现 100% 的代码覆盖率。你知道如何实现吗?

我尝试了以下方法但没有成功:

let nc = WLNetworkClient(coder: NSCoder())
XCTAssertNotNil(nc)

最佳答案

生产代码:

required init?(coder: NSCoder) {
    return nil
}

测试:

func testInitWithCoder() {
    let archiverData = NSMutableData()
    let archiver = NSKeyedArchiver(forWritingWithMutableData: archiverData)
    let someView = SomeView(coder: archiver)
    XCTAssertNil(someView)
}

由于required initializer返回nil并且没有使用coder,所以上面的代码可以简化为:

func testInitWithCoder() {
    let someView = SomeView(coder: NSCoder())
    XCTAssertNil(someView)
}

关于swift - 如何测试所需的初始化(编码器 :)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32500193/

相关文章:

unit-testing - 如何模拟库函数(测试 redux Action Creator)

C#-WPF : testing strategies

c - 如何使用 DejaGnu 设置单元测试

ios - 无法通过 CoreSimulator spawn 启动 IBCocoaTouchImageCatalogTool

xcode - 在 Xcode 7 上,我不断收到错误 "No accounts with iTunes connect access"

swift 2 : ! , ? -"Value of optional type ".. ."not unwrapped"

ios - UIButtons 的动画位置导致它们停止接收触摸 Action

swift - 如何在 Xcode7 的 UITests 下找到带谓词的按钮?

ios - Swift:检查用户输入计数以继续

ios - Swift 类中的可选 let 和可选 var