在Swift中使用OHHTTPStubs测试请求体

Add*_*dev 4 ios ohhttpstubs swift

我正在尝试测试用OHHTTPStubs捕获的请求体,但它看起来似乎有问题,因为它 request.httpBodynil.

我发现了有关此问题的此信息测试存根中的请求正文.但我在iOS开发方面很新,不知道如何OHHTTPStubs_HTTPBody在Swift中访问.我怎样才能做到这一点?

Ant*_*gin 8

我猜Swift的粗略等效将遵循:

import OHHTTPStubs.NSURLRequest_HTTPBodyTesting
...
stub(isMethodPOST() && testBody()) { _ in
  return OHHTTPStubsResponse(data: validLoginResponseData, statusCode:200, headers:nil)
}).name = "login"

public func testBody() -> OHHTTPStubsTestBlock {
  return { req in 
    let body = req.ohhttpStubs_HTTPBody()
    let bodyString = String.init(data: body, encoding: String.Encoding.utf8)

    return bodyString == "user=foo&password=bar"
  }
}
Run Code Online (Sandbox Code Playgroud)

因此,更准确地说,您可以OHHTTPStubs_HTTPBody通过调用ohhttpStubs_HTTPBody()内部方法来访问OHHTTPStubsTestBlock.