Тест Quickspec никогда не выполняется успешно, если тест включает HTTP-запрос - PullRequest
0 голосов
/ 11 сентября 2018

Я сейчас пишу тесты для небольшой части платформы 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, точка останова действительно сработала.

Это известная проблема, или я что-то наблюдаю?

Спасибо.

1 Ответ

0 голосов
/ 27 сентября 2018

Я думаю, вы передаете nil в качестве значений параметров на onCompletion.Вот почему всегда получаю ноль в качестве ответа.Попробуйте передать действительные значения параметров вместо nil.

пример:

onCompletion(err, params)
...