gpt4 book ai didi

ios - Swift UnitTesting 测试 2 个可选变量

转载 作者:行者123 更新时间:2023-11-28 12:28:16 25 4
gpt4 key购买 nike

我有 2 个变量,我想确保它们不会同时为 nil,一个变量不能为 nil 才能通过单元测试。

以下代码可以测试一个对象是否为 nil。

I've 2 variables dataArray & dataObject I just want to make sure that at a time one of them must have value

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)")
}

最佳答案

如果你有两个不同类型的可选属性,比如 ab,你可以切换元组 (a, b)对于 case (.none, .none),这将对应于两个属性都是 nil。如果不匹配这种情况,至少有一个属性是非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("...")
}

如果您的两个可选属性属于同一类型,比如说 Int?,那么您可以简单地测试表达式 a 的 nil 性?? b,只有当 ab 都为 nil 时,它才会为 nil

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

// ...

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

关于ios - Swift UnitTesting 测试 2 个可选变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42804534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com