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

时间:2018-03-27 20:18:01

标签: swift mocking protocols xctest

我有一个协议

protocol SomeProtocol { func method() }

及其实施

extension SomeProtocol {func method(){--implementation--}}

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

class SomeClass: SomeProtocol { func doSomething() { method() } }

我想要的是我希望在我的测试目标中,在我的XCTest文件中有一个不同的协议方法实现。为此,我做的是扩展SomeClass并在那里编写我的实现。

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

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

请告知我应该做些什么。

1 个答案:

答案 0 :(得分:3)

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

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