A small library inspired by OHHTTPStubs to stub your network requests written in Swift.
This module is beta software, it currently supports Xcode 6.1.1
// set up http stub
StubsManager.stubRequestsPassingTest({ (request: NSURLRequest!) -> Bool in
return true
}, withStubResponse:( { (request: NSURLRequest!) -> StubResponse in
return StubResponse(data:NSData.data(), statusCode: 200, headers: ["Content-Type" : "text/json"])
}))
// async test expectation
let registrationExpectation = expectationWithDescription("testStubWithNSURLSessionDefaultConfiguration");
let request = NSMutableURLRequest(URL: NSURL(string: "http://server.com"))
let config = NSURLSessionConfiguration.defaultSessionConfiguration()
let session = NSURLSession(configuration: config)
let task = session.dataTaskWithRequest(request) {(data, response, error) in
XCTAssertNil(error, "unexpected error")
XCTAssertNotNil(data, "response should contain data")
registrationExpectation.fulfill()
}
task.resume()
waitForExpectationsWithTimeout(10, handler: nil)
// set up http stub from a stubbed file located in the test bundle
StubsManager.stubRequestsPassingTest({ (request: NSURLRequest!) -> Bool in
return true
}, withStubResponse:( { (request: NSURLRequest!) -> StubResponse in
return StubResponse(filename: "mystubbedjson.json", location:.Bundle(NSBundle(forClass: AeroGearHttpStubTests.self)), statusCode: 200, headers: ["Content-Type" : "text/json"])
}))
// or
// set up http stub from a stubbed file located in the 'Documents' directory
StubsManager.stubRequestsPassingTest({ (request: NSURLRequest!) -> Bool in
return true
}, withStubResponse:( { (request: NSURLRequest!) -> StubResponse in
return StubResponse(filename: "mystubbedjson.json", location:.Documents, statusCode: 200, headers: ["Content-Type" : "text/json"])
}))
To add the library in your project, you can either use Cocoapods or manual install in your project. See the respective sections below for instructions:
Using Cocoapods
At this time, Cocoapods support for Swift frameworks is supported in a pre-release. In your Podfile
add:
pod 'AeroGearHttpStub'
and then:
pod install
to install your dependencies
Follow these steps to add the library in your Swift project:
- Add AeroGearHttpStub as a submodule in your project. Open a terminal and navigate to your project directory. Then enter:
git submodule add https://github.com/aerogear/aerogear-ios-httpstub.git
- Open the
aerogear-ios-httpstub
folder, and drag theAeroGearHttpStub.xcodeproj
into the file navigator in Xcode. - In Xcode select your application target and under the "Targets" heading section, ensure that the 'iOS Deployment Target' matches the application target of AeroGearHttpStub.framework (Currently set to 8.0).
- Select the "Build Phases" heading section, expand the "Target Dependencies" group and add
AeroGearHttpStub.framework
. - Click on the
+
button at the top left of the panel and select "New Copy Files Phase". Rename this new phase to "Copy Frameworks", set the "Destination" to "Frameworks", and addAeroGearHttpStub.framework
.
If you run into any problems, please file an issue and/or ask our user mailing list. You can also join our dev mailing list.