Я играю с юнит-тестированием в Swift.Я могу издеваться и тестировать большинство своих функций.Однако я борюсь с этим (это для викторины):
public func getQuestionSetStats() -> (numberOfQs: Int, answered: Int, totalCorrect: Int, totalWrong: Int)? {
guard questionSet != nil && questionSet!.count > 0 else {return nil}
let number = questionSet!.count
let answered = questionSet!.filter{ $0.answerGiven != nil && $0.answerGiven ?? 0 >= 0 }.count
let correct = Array ( zip(questionSet!.map{ Int( $0.question.solution) }, questionSet!.map{ $0.answerGiven }) )
let correctAnswers = correct.filter{ $0.0 == ( ($0.1 ?? 10) + 1)}.count
let wrong = number - correctAnswers
return (numberOfQs: number, answered: answered, totalCorrect: correctAnswers, totalWrong: wrong)
}
Это в основном возвращает состояние моего менеджера викторин для отображения некоторым контроллером представления.
Поскольку переменные очень сильно заняты в состоянии менеджера викторин, я не знаю, как выполнить модульное тестирование этой функции без настройки целого состояния для функции - каков наилучший подход для этого.