Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save atereshkov/9e431dfa5a3883fbfa10225f89f4e1a0 to your computer and use it in GitHub Desktop.
Save atereshkov/9e431dfa5a3883fbfa10225f89f4e1a0 to your computer and use it in GitHub Desktop.
import Foundation
import Combine
import XCTest
class Sut {
private var bag = Set<AnyCancellable>()
var triggerSubject = PassthroughSubject<Void, Never>()
func start() {
Swift.print("I'm starting doing a work")
doWork()
.receive(on: DispatchQueue.main)
.sink(receiveValue: { [weak self] value in
Swift.print("I'm done: \(value)")
self?.triggerSubject.send()
})
.store(in: &bag)
}
func doWork() -> Future<Int, Never> {
return Future { promise in
promise(.success(100500))
}
}
}
class TestCase: XCTestCase {
var sut: Sut!
var bag = Set<AnyCancellable>()
override func setUpWithError() throws {
sut = Sut()
}
override func tearDownWithError() throws {
sut = nil
}
func test() {
var subjectTriggered = false
sut.triggerSubject.sink(receiveValue: { _ in
Swift.print("Triggered")
subjectTriggered = true
})
.store(in: &bag)
XCTAssertFalse(subjectTriggered)
Swift.print("Please, start")
sut.start()
XCTAssertTrue(subjectTriggered)
}
}
TestCase.defaultTestSuite.run()
//let sut = Sut()
//sut.start()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment