Last active
March 2, 2024 18:01
-
-
Save MounikaMadishetti/fe2f3f1b6848004a1fe213cbd14943bd to your computer and use it in GitHub Desktop.
Sample code to demonstrate URLSession subclassing and injecting to the SUT
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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