如何断言结构符合协议?

时间:2019-07-05 18:19:30

标签: swift struct xctest swift-protocols xctestcase

我有一个测试用例,断言一个类符合协议。

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

        }

我正在尝试使用符合协议的struct实施相同的测试,但是该测试始终失败。

有可能实现这一目标吗?

编辑

我已经添加了我的结构。我正在遵循TDD方法,因此目前尚未实现。

protocol CountManagerType {

}

struct CountManager: CountManagerType {

}

我的测试是

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

    }

2 个答案:

答案 0 :(得分:0)

在下面的示例中,您的代码对我来说很好用

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

答案 1 :(得分:0)

我在操场上运行了这段代码,看来还可以:


    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()