快速嘲笑使用final

快速嘲笑使用final,第1张

概述为了测试 swift对象,从我读过的内容中,我们对它们进行子类化并模拟我们想要的方法返回我们的测试值.然后,我观看了一个关于快速性能的WWDC视频,并且演示者建议将类标记为最终,以帮助编译器决定如何调用方法,从我看到添加final的示例可以提供帮助. 我遇到的问题如何将类标记为final,但仍然允许子类模拟?有没有人真正遇到这个问题或者我应该从我的声明中删除最后一个关键字? 任何建议都很棒,或者没 为了测试 swift对象,从我读过的内容中,我们对它们进行子类化并模拟我们想要的方法返回我们的测试值.然后,我观看了一个关于快速性能的WWDC视频,并且演示者建议将类标记为最终,以帮助编译器决定如何调用方法,从我看到添加final的示例可以提供帮助.

我遇到的问题如何将类标记为final,但仍然允许子类模拟?有没有人真正遇到这个问题或者我应该从我的声明中删除最后一个关键字?

任何建议都很棒,或者没有任何建议可以告诉我,我做得不对.

谢谢,
麦克风.

解决方法 我知道这个帖子有点旧,但我想我还是会发表评论.你的另一个选择是面向协议.在协议中定义最终类的公共接口,并使最终类实现该协议.然后,您所要做的就是模拟协议,您的课程将保持最终状态.这为您提供静态调度和模拟.我不确定这是否是本身最好的选项,但它是我在框架构建中使用的那个,这样我们就可以测试我们的框架代码,同时为消费应用程序提供优化的二进制文件.

internal protocol MockableProtocol {    func deleteItem(_ itemID: String) -> Bool    func fetchAllitems() -> [CustomObject]    func fetchItem(for ID: String) -> CustomObject?}
internal final class MyFinalClass: MockableProtocol {    func deleteItem(_ itemID: String) -> Bool {        // Your code here    }    func fetchAllitems() -> [CustomObject] {        // Your code here    }    func fetchItem(for ID: String) -> CustomObject? {        // Your code here    }}

然后在测试中:

class TestMockClass: MockableProtocol {    func deleteItem(_ itemID: String) -> Bool {        // Your code here    }    func fetchAllitems() -> [CustomObject] {        // Your code here    }    func fetchItem(for ID: String) -> CustomObject? {        // Your code here    }}
总结

以上是内存溢出为你收集整理的快速嘲笑使用final全部内容,希望文章能够帮你解决快速嘲笑使用final所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1003889.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存