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

时间:2018-04-23 21:24:03

标签: ios swift4 xcode9 ohhttpstubs

我通过可可豆荚拉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从bundle加载文件:

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

但我收到了这个错误:

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

我向你们提出的问题是我做错了或为什么我会收到这些错误?

我真的很感谢你的帮助。

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:1)

onStubMissing不是OHHTTPStubs的属性,而是一个函数,因此您只需要在已经拥有的函数调用中添加(),就像这样

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

它应该可以工作

对于第二个问题,OHPathForFileInBundle不带bundle参数,您需要从示例中发送资源文件名和其捆绑包中包含该资源的类:

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

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