Swift:OHHTTPStubs 的测试实现显示错误

Posted

技术标签:

【中文标题】Swift:OHHTTPStubs 的测试实现显示错误【英文标题】:Swift: Test implementation of OHHTTPStubs showing errors 【发布时间】:2018-04-23 21:24:03 【问题描述】:

我通过可可豆荚提取 OHHTTPStubs,但我遇到了一些问题,我不知道为什么。这是我的 podFile 的副本

# platform :ios, '11.3'

target 'myApp' do
  use_frameworks!
  target 'myAppTests' do
    inherit! :search_paths
   pod 'OHHTTPStubs/Swift'
  end
end

在我的测试文件上:

import OHHTTPStubs
@testable import myApp

class myTest: XCTestCase 

    var client: CryptoCompareClient!

    override func setUp() 
        super.setUp()
        OHHTTPStubs.onStubMissing  request in
            XCTFail("Missing stub for \(request)")
        
    

在这一行:

    OHHTTPStubs.onStubMissing  request in
        XCTFail("Missing stub for \(request)")
    

我收到以下错误:

Type 'OHHTTPStubs' has no member 'onStubMissing'

我也在尝试使用 OHHTTPStubs 从包中加载文件:

let bundle = OHResourceBundle("myFixtures", FixtureLoader.self)!
        let path = OHPathForFileInBundle(filename, bundle)!
        return OHHTTPStubsResponse(fileAtPath: path, statusCode: 200, headers: nil)

但是我收到了这个错误:

使用未解析的标识符“OHResourceBundle”和 使用未解析的标识符“OHPathForFileInBundle”

我对你们的问题是我做错了什么或者为什么我会收到这个错误?

非常感谢您的帮助。

【问题讨论】:

【参考方案1】:

对于任何使用OHHTTPStubsResponse 的人,我可以看到它被重命名为HTTPStubsResponse

【讨论】:

【参考方案2】:

onStubMissing 不是 OHHTTPStubs 的属性,而是一个函数,所以你只需要在你已有的函数调用中加上 (),像这样

OHHTTPStubs.onStubMissing()  request in
    XCTFail("Missing stub for \(request)")

它应该可以工作

至于您的第二个问题,OHPathForFileInBundle 没有使用 bundle 参数,您需要从示例中发送资源文件名和 bundle 包含该资源的类:

let stubPath = OHPathForFile("stub.txt", type(of: self))

注意第二个参数是一个类,而不是一个包

【讨论】:

以上是关于Swift:OHHTTPStubs 的测试实现显示错误的主要内容,如果未能解决你的问题,请参考以下文章

OHHTTPStubs 单元测试实现

未找到“OHHTTPStubs/OHHTTPStubs.h”文件

OHHTTPStubs 不是存根主机?

让 Alamofire 和 OHHTTPStubs 一起工作

使用 OHHTTPStubs 模拟时未达到 Alamofire 响应块

无法使用 Alamofire 测试存根响应