【问题标题】:Swift: Test implementation of OHHTTPStubs showing errorsSwift:OHHTTPStubs 的测试实现显示错误
【发布时间】: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”

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

非常感谢您的帮助。

【问题讨论】:

    标签: ios swift4 xcode9 ohhttpstubs


    【解决方案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))
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-11-03
        • 2018-07-02
        • 1970-01-01
        • 2020-01-04
        相关资源
        最近更新 更多