Я думаю, ваша проблема в том, что вы пытаетесь протестировать код не в том месте.
Представьте, что если вам нужно протестировать функцию модуля, вам нужно создать экземпляр всей структуры UICollection
, это плохо запах.
Например, вы можете сделать это.
enum UseCaseError {
textEmpty
}
class UseCase {
private let index: Int
private let text: String
init(index: Int, text: String) {
self.index = index
self.text = text
}
public func execute() throws {
guard text.isEmpty == false else {
throw UseCaseError.textEmpty
}
// your logic here to be tested
}
}
Глядя на это UseCase
, вы можете проверить, когда text
пусто и все ваши бизнес-логи c
Теперь вам просто нужно поместить его в categoryTextEditedAt
метод
func categoryTextEditedAt(_ cell: UICollectionViewCell, _ text: String) {
guard let indexPath = self.collectionView.indexPath(for: cell) { return }
try? UseCase(index: indexPath.item, text: text).execute()
}
Если вы поместите код отдельно, вы можете проверить его раньше, и вам не нужно тратить время на попытки UIKit
функции работают, только ваша логика c.
Я надеюсь помочь вам с этим примером.