【问题标题】:Check is variable is array or not with XCTest使用 XCTest 检查变量是否为数组
【发布时间】:2017-08-30 10:09:38
【问题描述】:

如何知道变量返回函数是否​​为数组?例子: 在我的 Presenter 中,我有这个功能:

 func filterGnomosForName(name:String) -> [Gnomo]{
    let res = listGnomos.filter { ($0.name?.lowercased().contains(name.lowercased()))!}
    return res
}

而MyTestClass我有这个测试功能:

    func testFilterGnomo(){
    let result = listPresenter.filterGnomosForName(name: "Nam")
    XCTAssert(result == [Gnomo])
}

Gnomo 是 array 中的类型对象,但只想知道是否是 array 以知道函数是否正确,帮帮我?

【问题讨论】:

    标签: ios arrays swift xcode xctest


    【解决方案1】:

    当我声明一个对象类型时,我会这样做:

    XCTAssert((object as Any) is Array)
    

    我之前没有断言过数组,但我认为以上方法可行。

    这是我刚刚在 Swift Playground 中创建的示例:

    import UIKit
    import XCTest
    
    class MyTestClass: XCTestCase {
    
        func testSomething() {
            let myArray: [String] = ["foo", "bar"]
    
            XCTAssert((myArray as Any) is String) // Fails
            XCTAssert((myArray as Any) is [String]) // Passes
        }
    }
    
    MyTestClass.defaultTestSuite().run()
    

    【讨论】:

    • 如果您先将其转换为Any,则不会。我在答案中添加了更多示例代码以显示一个工作示例。
    猜你喜欢
    • 2011-02-26
    • 2016-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 2011-01-12
    • 2014-01-25
    相关资源
    最近更新 更多