如何测试所需的 init(coder:)? [英] How to test required init(coder:)?

查看:16
本文介绍了如何测试所需的 init(coder:)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

In my custom class WLNetworkClient I had to implement such method:

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

我不需要使用它,但我想测试它以实现 100% 的代码覆盖率.您知道如何实现这一目标吗?

I do not need to use that, but I would like to test this to make 100% code coverage. Do you know how to achieve this?

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

I tried following way with no success:

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)
}

由于所需的初始化器返回nil并且没有使用编码器,所以上面的代码可以简化为:

Since the required initializer returns nil and does not use the coder, the above code can be simplified to:

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

这篇关于如何测试所需的 init(coder:)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆