OHHTTPStubs не издеваются над запросами, если приложение iOS имеет свои собственные запросы?OHHTTPStubs не укорачивает хост?
Если приложение делает любой запрос Alamofire перед испытаниями запуска, OHHTTPStubs не издеваться никаких запросов в блоке тестов
OHHTTPStubs 4.3.0 with swift support
Alamofire 2.0.2
Test File - работает, как ожидалось
stub(isHost("httpbin.org")) { _ in
let stubData = "Hello World!".dataUsingEncoding(NSUTF8StringEncoding)
return OHHTTPStubsResponse(data: stubData!, statusCode:200, headers:nil)
}
print("@@Start")
Alamofire.request(.GET, "http://httpbin.org/get", parameters: ["foo": "bar"])
.responseString() { request, response, data in
print(data)
}
Но как только вы добавите следующее AppDelegate.swift, он больше не работает, и вместо этого делает фактический запрос HTTP к службе
Alamofire.request(.GET, "http://httpbin.org/get")
.responseString() { request, response, data in
print(data)
}
Оригинальный вопрос оставили для потомков
Update : Я попробовал еще раз в чистом проекте, и он работал так, как ожидалось, поэтому должно быть что-то еще.
В последнем обновлении до swift 2.0 OHHTTPStubs не выполнял запросы, и вместо этого они передавались и вызывают вживую.
Я установил короткий пример в модульном тесте, но он все еще проходит. Что мне не хватает?
import Foundation
import Quick
import Nimble
import Alamofire
import OHHTTPStubs
class RequestsSpec: QuickSpec {
var data:Result<String>? = nil
override func spec() {
describe("the request") {
it("needs to make a request") {
stub(isHost("httpbin.org")) { _ in
let stubData = "Hello World!".dataUsingEncoding(NSUTF8StringEncoding)
return OHHTTPStubsResponse(data: stubData!, statusCode:200, headers:nil)
}
Alamofire.request(.GET, "http://httpbin.org/get", parameters: ["foo": "bar"])
.responseString() { request, response, data in
print(request)
print(response)
print(data)
print(data.value)
self.data = data
}
expect(self.data).toEventuallyNot(beNil(), timeout: 3)
}
}
}
Я получаю
Optional(<NSMutableURLRequest: 0x7f91598e22e0> { URL: http://httpbin.org/get?foo=bar })
Optional(<NSHTTPURLResponse: 0x7f915da8c220> { URL: http://httpbin.org/get?foo=bar } { status code: 200, headers {
"Access-Control-Allow-Credentials" = true;
"Access-Control-Allow-Origin" = "*";
Connection = "keep-alive";
"Content-Length" = 364;
"Content-Type" = "application/json";
Date = "Thu, 01 Oct 2015 04:19:42 GMT";
Server = nginx;
} })
Optional("{\n \"args\": {\n \"foo\": \"bar\"\n }, \n \"headers\": {\n \"Accept\": \"*/*\", \n \"Accept-Encoding\": \"gzip;q=1.0,compress;q=0.5\", \n \"Accept-Language\": \"en-US;q=1.0\", \n \"Host\": \"httpbin.org\", \n \"User-Agent\": \"ios-consumer-app/com.dante.ouli2 (28; OS Version 9.0 (Build 13A340))\"\n }, \n \"url\": \"http://httpbin.org/get?foo=bar\"\n}\n")
Вместо Hello World!
Я попытался сделать запрос с NSURLSession и OHHTTPStubs работал правильно. Похоже, что что-то не так с взаимодействием OHHTTPStubs/Alamofire?
let url = NSURL(string: "http://httpbin.org/get")
let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in
print(NSString(data: data!, encoding: NSUTF8StringEncoding))
self.data2 = data
}
- OHHTTPStubs 4.3.0 с быстрой поддержкой
- Alamofire 2.0.2
Я открыл билет с OHHTTPStubs создателем и оказывается его краевой кейс между Alamofire и OHHTTPStubs https://github.com/AliSoftware/OHHTTPStubs/issues/126 резолюции перечислены в нижней части темы – wyu