Mockingjay alternatives and similar libraries
Based on the "Other Testing" category.
Alternatively, view Mockingjay alternatives based on common mentions on social networks and blogs.
-
Buildasaur
Automatic testing of your Pull Requests on GitHub and BitBucket using Xcode Server. Keep your team productive and safe. Get up and running in minutes. @buildasaur -
NaughtyKeyboard
DISCONTINUED. The Big List of Naughty Strings is a list of strings which have a high probability of causing issues when used as user-input data. This is a keyboard to help you test your app from your iOS device. -
Mockingbird
Simplify software testing, by easily mocking any system using HTTP/HTTPS, allowing a team to test and develop against a service that is not complete or is unstable or just to reproduce planned/edge cases. -
MetovaTestKit
A collection of useful test helpers designed to ease the burden of writing tests for iOS applications. -
SnappyTestCase
iOS Simulator type agnostic snapshot testing, built on top of the FBSnapshotTestCase. -
XCTestExtensions
XCTestExtensions is a Swift extension that provides convenient assertions for writing Unit Test. -
TestKit
The easiest way to implement full BDD in your Swift iOS projects! Use plain English specs (Gherkin) to drive tests that include both UI automation and interacting with application data & state.
SaaSHub - Software Alternatives and Reviews
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Mockingjay or a related project?
README
Mockingjay
An elegant library for stubbing HTTP requests in Swift, allowing you to stub any HTTP/HTTPS using NSURLConnection
or NSURLSession
. That includes any request made from libraries such as Alamofire and AFNetworking.
Installation
CocoaPods is the recommended installation method.
pod 'Mockingjay'
Usage
Mockingjay has full integration to XCTest and you simply just need to register a stub, it will automatically be unloaded at the end of your test case. It will also work with the Quick behaviour-driven development framework.
Simple stub using a URI Template, returning a response with the given JSON encoded structure
let body = [ "user": "Kyle" ]
stub(uri("/{user}/{repository}"), json(body))
The uri
function takes a URL or path which can have a URI Template. Such as the following:
https://github.com/kylef/WebLinking.swift
https://github.com/kylef/{repository}
/kylef/{repository}
/kylef/URITemplate.swift
Stubbing a specific HTTP method with a JSON structure
let body = [ "description": "Kyle" ]
stub(http(.put, uri: "/kylef/Mockingjay"), json(body))
Stubbing everything request to result in an error
let error = NSError()
stub(everything, failure(error))
Stub with a specific HTTP response
stub(everything, http(status: 404))
Note, the http
builder can take a set of headers and a body too.
Stub
The stub
method in Mockingjay takes two functions or closures, one to match the request and another to build the response. This allows you to easily extend the syntax to provide your own specific functions.
stub(matcher, builder)
Matchers
A matcher is simply a function that takes a request and returns a boolean value for if the stub matches the request.
func matcher(request:URLRequest) -> Bool {
return true // Let's match this request
}
stub(matcher, failure(error))
Builders
Builders are very similar to a matcher, it takes a request, and it returns either a success or failure response.
func builder(request: URLRequest) -> Response {
let response = HTTPURLResponse(url: request.url!, statusCode: 200, httpVersion: nil, headerFields: nil)!
return .success(response, .noContent)
}
stub(matcher, builder)
Generics
You can make use of the builtin generic matchers and builders. These can be used alone, or in conjunction with custom components.
Builtin Matchers
everything
- Matches every given request.uri(template)
- Matches using a URI Template.http(method, template)
- Matches using a HTTP Method and URI Template.
Builtin Builders
failure(error)
- Builds a response using the given error.http(status, headers, data)
- Constructs a HTTP response using the given status, headers and data.json(body, status, headers)
- Constructs a JSON HTTP response after serialising the given body as JSON data.jsonData(data, status, headers)
- Constructs a JSON HTTP response with raw JSON data.
Using JSON files as test fixtures
During setUp
, load the JSON file as NSData
and use jsonData
.
override func setUp() {
super.setUp()
let url = Bundle(for: type(of: self)).url(forResource: "fixture", withExtension: "json")!
let data = try! Data(contentsOf: url)
stub(matcher, jsonData(data))
}
License
Mockingjay is licensed under the BSD license. See [LICENSE](LICENSE) for more info.
*Note that all licence references and agreements mentioned in the Mockingjay README section above
are relevant to that project's source code only.