swift - 当测试包含 HTTP 请求时,Quickspec 测试永远不会成功执行
问题描述
我目前正在为我正在开发的 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())
}
}
}
}
}
每当我运行它时,测试立即通过。即使有:
getOrderbook
1)我的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
时,断点确实被触发了。
这是一些已知问题,还是我正在监督的问题?
谢谢。
解决方案
我认为您将 anil
作为参数值传递给onCompletion
. 这就是为什么总是收到 nil 作为响应。尝试传递有效的参数值而不是nil
.
前任:
onCompletion(err, params)
推荐阅读
- java - 在流 java 8 中解析逗号分隔的键值对
- javascript - 如何在没有存在意图的情况下创建转储命令
- java - 为什么我不能将嵌套类分配给它的父类?
- amazon-web-services - 未应用 aws rds 的参数值
- python - Django error: ValueError at /cart/ -> The QuerySet value for an exact lookup must be limited to one result using slicing
- r - 使用 data.table 时,R/RStudio 会自行创建不需要的列
- android - android kotlin 上的滑块横幅,带有 100% 屏幕的照片
- google-sheets - 如何在谷歌表格中创建以逗号分隔的arrayformula序列号
- azure-functions - 只有一个定时器功能的地理灾难恢复Azure功能应用程序
- r - R 在脚本传递列表/数据框/等中创建 HTML 笔记本。变量作为标题,内容等