2017-08-30 34 views
0

做如何知道變量返回函數是否​​是數組?例如: 在我的演講我有這樣的功能:檢查變量是數組還是不帶XCTest

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是數組類型的對象,但只是想知道,如果是數組或不爲了知道功能是否正確,幫助我?

回答

0

當我斷言對象鍵入我這樣做:

XCTAssert((object as Any) is Array) 

我沒有之前建立一個數組,但我認爲上面會工作。

這是我剛在斯威夫特遊樂場創建了一個例子:

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

是的,但「是」總是返回true ... – Alejandro

+0

如果你不首先把它轉換成'Any'。我已經在我的答案中添加了更多示例代碼來顯示一個工作示例。 – Hodson

+0

多數民衆贊成,謝謝。 – Alejandro