Class
HearkenTestCase
open class HearkenTestCase: XCTestCase
An XCTestCase
subclass that instantiates a Server
for each test scenario.
Create your own subclass of HearkenTestCase
in your tests:
import HearkenTestKit
class MyTestCase: HearkenTestCase {
...
}
Use the assert
method to check that the tested application makes the correct request:
func testSomething() {
assert(request: .init(method: .POST,
uri: "/api/test",
body: "Body",
response: .init(status: .ok))
...
}
Relationships
Conforms To
XCTestCase
Properties
server
let server
The Server
to be used in each test scenario.
The Server
is started in setUp()
and stopped in tearDown()
,
failing the test if something goes wrong.
Methods
setUp()
override open func setUp()
Provides an opportunity to reset state before each test method in a test case is called.
The setUp()
instance method is called once before each test begins.
Override this method to reset state for each test method.
The Server
is started in this method.
tearDown()
override open func tearDown()
Provides an opportunity to perform cleanup after each test method in a test case ends.
The tearDown()
instance method is called once after each test completes.
Override this method to perform any per-test cleanup.
The Server
is stopped in this method.
assert(request:response:headersMustMatch:)
public func assert(request: HTTPRequest, response: HTTPResponse, headersMustMatch: Bool = false)
Asserts that the request provided and the actually received request match.
If the request has the Content-Type: application/json
header,
the body is parsed into a JSON and then matched.
Similarly if it has Content-Type: application/x-www-form-urlencoded
,
the body is parsed into a Dictionary
and then matched.
Otherwise the raw Data
is matched.
Networking libraries usually add some headers to the requests
even if the application did not so headersMustMatch
defaults to false
.
Parameters
Name | Type | Description |
---|---|---|
request | HTTPRequest |
|
response | HTTPResponse |
|
headersMustMatch | Bool |
|
decode(json:)
func decode(json body: Data) -> [String: AnyHashable]
decode(urlEncodedForm:)
private func decode(urlEncodedForm body: Data) -> [String: String]