У меня есть протокол с реализацией по умолчанию в расширении этого протокола. Когда я пытаюсь создать конкретный фиктивный объект этого протокола для модульного тестирования, реализация по умолчанию всегда выполняется. Я не могу понять, почему. Любая помощь будет оценена. Я нахожусь на xcode 11.3
protocol ABC: AnyObject {
func doSomething()
}
extension ABC {
func doSomething() {
print("Did Something")
}
}
final class ClassToBeTested {
var abc: ABC?
func methodToBeTested() {
abc?.doSomething()
}
}
В Test Target
final class MockABC: ABC {
func doSomething() {
print("Did Something in Test Target")
}
}
final class Tests: XCTestCase {
func testMethod() {
let obj = ClassTobeTested()
// abc property is of type protocol ABC
obj.abc = MockABC()
*This line calls the default implementation of the protocol of ABC and not the
implementation in MockABC class - verifiable by breakpoints and print statements*
obj.methodToBeTested()
}
}
Я прочитал отправку static
, которая происходит в таких случаях, но не смог найти какая-то конкретная причина для этого. Пожалуйста, помогите.