我目前正在为我正在研究的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)我的getOrderbook
实例的方法Kraken
中的一个断点。
2)nil
在orderbook
语句中使用的expect
变量中返回。
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
请求上方时,该断点确实被触发。
这是一个已知问题,还是我正在监督的事情?
谢谢。
答案 0 :(得分:0)
我认为您正在传递nil
上的onCompletion
作为参数。那就是为什么总是以零作为回应。尝试传递有效的参数值而不是nil
。
例如:
onCompletion(err, params)