2017-03-15 8 views
0

2つの変数があり、両方が同時にnilでないことを確認したい場合は、1つの変数で単体テストを渡す必要はありません。Swift UnitTesting 2つの任意の変数をテストする

次のコードは、1つのオブジェクトがnilでないことをテストできます。

私は2つの変数がdataArray &のDataObject私はちょうどあなたが異なったタイプの2つのオプションのプロパティを持っている場合は一度にそのうちの一つが値

CoreWebService.sendRequest(requestURL: WebURL.testFeed, paramters: params) { (sender: RequestCallback<BaseResponse<DataJson>>) in 

     switch sender { 
     case .failed(let error): 
      XCTFail("Error\(error.localizedDescription)") 
      break 
     case .success(let object): 
      XCTAssertNotNil(object.dataArray, "data must not nil") 
      break 
     } 
     xctExpect.fulfill() 

    } 
    waitForExpectations(timeout: timeout) { (error) in 
     XCTAssertNil(error, "Test time out\(error?.localizedDescription)") 
    } 

答えて

1

を持っている必要があります ことを確認するにしました、 abとすると、(a, b)のタプルをcase (.none, .none)に切り替えることができます。これは、両方のプロパティがnilに対応します。このケースに合致しない場合は、少なくとも1つのプロパティが非nilです。例えば。

let a: Int? = 1 
let b: String? = nil 

// ... 

switch (a, b) { 
    case (.none, .none): XCTFail("...") // fail case 
    case _ :() // otherwise _at least_ one of 'a' and 'b' 
       // is non-nil 
} 

それとも、あなたのオプションのプロパティの両方が同じタイプである場合は、単に

// fail case w.r.t. 'nil'-ness? 
if case (.none, .none) = (a, b) { 
    XCTFail("...") 
} 

は、その後、あなたは、単に表現a ?? bnil -nessになりますテストすることができ、Int?言いますnilabの両方がnilの場合のみです。

let a: Int? = 1 
let b: Int? = nil 

// ... 

XCTAssertNotNil(a ?? b, "Both properties are nil ...") 
+0

はどうもありがとうございました:) –

+0

をあなたはこの質問の表情を持っていることができれば、私はそれも でhttpこだわっている:// stackoverflowの.com/questions/42778641/objectmapper-array-or-object-on-data –

1

あなたはこのようなflatMapを試すことができます...

let dataArray: [String]? = ["a", "b"] 
let dataObject: Int? = nil 

// Create an array of your objects 
let allObjects: [Any?] = [dataArray, dataObject] 

// Use flatMap to return an array of non-nil objects 
let nonNil = allObjects.flatMap({$0}) 

// Check count is > 0 
XCTAssertGreaterThan(nonNil.count, 0) 
+1

ありがとう、あなたの答えはあまりにも私は1つを受け入れることができます! –

+0

もしあなたがこの質問を見ることができれば、私もそれに固執しています http://stackoverflow.com/questions/42778641/objectmapper-array-or-object-based-on-data –

関連する問題