import Combine
import XCTest
// Example ViewModel
class MyViewModel {
@Published var text: String = ""
var cancellables = Set()
func updateText(with value: String) {
text = value
}
}
// Unit Tests
class MyViewModelTests: XCTestCase {
var viewModel: MyViewModel!
var cancellables: Set!
override func setUp() {
super.setUp()
viewModel = MyViewModel()
cancellables = []
}
override func tearDown() {
viewModel = nil
cancellables = nil
super.tearDown()
}
func testTextUpdate() {
let expectation = XCTestExpectation(description: "Text should update")
viewModel.$text
.dropFirst() // Ignore the initial value
.sink(receiveValue: { newValue in
XCTAssertEqual(newValue, "Hello, World!")
expectation.fulfill()
})
.store(in: &cancellables)
viewModel.updateText(with: "Hello, World!")
wait(for: [expectation], timeout: 1.0)
}
}
How do I avoid rehashing overhead with std::set in multithreaded code?
How do I find elements with custom comparators with std::set for embedded targets?
How do I erase elements while iterating with std::set for embedded targets?
How do I provide stable iteration order with std::unordered_map for large datasets?
How do I reserve capacity ahead of time with std::unordered_map for large datasets?
How do I erase elements while iterating with std::unordered_map in multithreaded code?
How do I provide stable iteration order with std::map for embedded targets?
How do I provide stable iteration order with std::map in multithreaded code?
How do I avoid rehashing overhead with std::map in performance-sensitive code?
How do I merge two containers efficiently with std::map for embedded targets?