Как я могу утверждать, что структура соответствует протоколу? - PullRequest
0 голосов
/ 05 июля 2019

У меня есть тестовый пример, который утверждает, что класс соответствует протоколу.

        let sut = SomeClass()    
        ..........
        func test_some_class_conform_to_protocol() {
                XCTAssertTrue((sut as Any) is OverlayManagerType)

        }

Я пытаюсь реализовать тот же тест с struct, который соответствует протоколу, однако тест постоянно терпит неудачу.

Возможно ли этого добиться?

EDIT

Я добавил свою структуру. Я придерживаюсь подхода TDD, так что пока нет реализации.

protocol CountManagerType {

}

struct CountManager: CountManagerType {

}

Мой тест

    func test_count_manager_conform_to_protocol() {
            XCTAssertTrue((sut as Any) is CountManagerType)

    }

Ответы [ 2 ]

0 голосов
/ 06 июля 2019

Я запустил этот код на детской площадке, и вроде бы все в порядке:


    import UIKit
    import XCTest

    protocol CountManagerType {

    }

    struct CountManager: CountManagerType {

    }

    struct CountManager1 {

    }

    class CountManagerTests: XCTestCase {
      override func setUp() {
          super.setUp()
      }

      func test_countmanager_conform_to_protocol() {
        XCTAssertTrue((CountManager() as Any) is CountManagerType)
      }

      func test_countmanager1_conform_to_protocol() {
        XCTAssertTrue((CountManager1() as Any) is CountManagerType)
      }
    }

    CountManagerTests.defaultTestSuite.run()
0 голосов
/ 05 июля 2019

Ваш код работает нормально для меня, в следующем примере

protocol CountManagerType {
}
struct CountManager1: CountManagerType {
}
struct CountManager2 {
}

let c1 = CountManager1()
print(((c1 as Any) is CountManagerType)) // true
let c2 = CountManager2()
print(((c2 as Any) is CountManagerType)) // false
...