Skip to content

Instantly share code, notes, and snippets.

@MounikaMadishetti
Last active March 2, 2024 18:01
Show Gist options
  • Save MounikaMadishetti/fe2f3f1b6848004a1fe213cbd14943bd to your computer and use it in GitHub Desktop.
Save MounikaMadishetti/fe2f3f1b6848004a1fe213cbd14943bd to your computer and use it in GitHub Desktop.
Sample code to demonstrate URLSession subclassing and injecting to the SUT
// MARK: - Main Target
final class HTTPClient {
let session: URLSession
init(session: URLSession = URLSession.shared) {
self.session = session
}
func get(from url: URL) {
session.dataTask(with: URLRequest(url: url)).resume()
}
}
// MARK: - Test Target
final class HTTPClientTests {
func test_initHTTPClient_sessionNotNil() {
let sut = makeSUT()
XCTAssertNotNil(sut.session)
}
func makeSUT() -> HTTPClient {
return HTTPClient(session: URLSessionSpy())
}
}
final class URLSessionSpy: URLSession {
override func dataTask(with request: URLRequest) -> URLSessionDataTask {
// add required logic for capturing data
return SampleURLSessionDataTask()
}
private class SampleURLSessionDataTask: URLSessionDataTask {}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment