我目前正在为我正在开发的OSX框架的一小部分编写测试。测试是使用包编写的Quick
和Nimble
。测试本身是非常基本的:
class OrderbookTestKraken: QuickSpec {
let kraken = Kraken()
override func spec() {
let coin = Coin(name: "DOGE", ask: 0.0, bid: 0.0, last: 0.0, bidSize: 0.0, askSize: 0.0)
describe("When an order book is requested") {
it("it should create an orderbook successfully") {
self.kraken.getOrderbook(coin: coin) { (error, orderbook) in
expect(orderbook).notTo(beNil())
}
}
}
}
}
每当我运行它时,测试都会立即通过。即使有:
1( 我的Kraken
实例的方法getOrderbook
中的断点。 2(nil
在expect
语句中使用的orderbook
变量中返回。
getOrderbook
方法如下所示:
func getOrderbook(coin: Coin, onCompletion: @escaping (Error?, Orderbook?) -> Void) {
Alamofire.request("(publicApiUrl ?? "")/Depth",
method: .get,
parameters: ["pair": "(coin.name)XBT", "count": 3],
encoding: URLEncoding.default,
headers: nil).validate().responseJSON { response in
// There's a breakpoint here.
onCompletion(nil, nil)
}
}
因此,它始终在回调中返回nil
,并且存在未触发的断点,但测试始终成功。当我尝试一些穴居人调试,并在Alamofire
请求上方放置断点时,断点确实被触发了。
这是某个已知问题,还是我正在监督的问题?
谢谢。
我认为您正在传递nil
作为onCompletion
上的参数值。这就是为什么总是接收 nil 作为响应。尝试传递有效的参数值而不是nil
。
前任:
onCompletion(err, params)