即使在 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 文件中实现类扩展中的方法后,仍会调用协议的默认实现的主要内容,如果未能解决你的问题,请参考以下文章