使用 XCTest 检查变量是否为数组

Ale*_*dro 1 arrays xcode ios xctest swift

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

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

和 MyTestClass 我有这个测试功能:

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

Gnomo 是数组中的一个类型对象,但只想知道是否是数组以了解函数是否正确,帮帮我?

Hod*_*son 5

当我断言对象类型时,我这样做:

XCTAssert((object as Any) is Array)
Run Code Online (Sandbox Code Playgroud)

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

这是我刚刚在 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()
Run Code Online (Sandbox Code Playgroud)