即使在 XCTest 文件中实现类扩展中的方法后,仍会调用协议的默认实现

Posted

技术标签:

【中文标题】即使在 XCTest 文件中实现类扩展中的方法后,仍会调用协议的默认实现【英文标题】:Always the default implementation of protocol gets called even after implementing the method in class extension in an XCTest file 【发布时间】:2018-03-27 20:18:01 【问题描述】:

我有一个协议

protocol SomeProtocol  func method() 

及其实现

extension SomeProtocol func method()--implementation--

在构建目标中,我有一个确认此协议的类

class SomeClass: SomeProtocol  func doSomething()  method()  

我想要的是我想在我的 XCTest 文件中的测试目标中使用不同的协议方法实现。为此,我所做的是扩展了 SomeClass 并在那里编写了我的实现。

extension SomeClass func method()--other implementation-- 

但它在执行测试用例时从未被调用过。总是调用构建目标中的方法,即默认实现。

请指教我应该怎么做。

【问题讨论】:

【参考方案1】:

找到了。我正在使用@testable import MYProject. 如果您使用此方法,上述方法将不起作用。如果您要添加所有项目文件而不是使用导入,则上述方法有效。

参考:https://medium.com/@hartwellalex/protocol-extensions-and-shared-dependency-injection-in-swift-an-alternative-to-singletons-68934dee6998

【讨论】:

很好的解决方法!要了解有关此案例的更多信息,请参阅:***.com/questions/53487613/…

以上是关于即使在 XCTest 文件中实现类扩展中的方法后,仍会调用协议的默认实现的主要内容,如果未能解决你的问题,请参考以下文章

如何在头文件C++中实现类对象

在 Scala Slick 中实现类实例成员修改的最佳方法?

在 pyspark 中实现类不平衡算法

如何在派生类中实现类的基本函数

实现方法时如何使用命名空间?

记Flask的一种设置项目配置的方法!