У меня есть небольшая функция сортировки в Interactor
, которая берет набор String
s, сортирует его и уведомляет Presenter
. функция работает как положено.
Теперь я просто пытаюсь покрыть эту функцию модульным тестом . поэтому я создал Unit Test Class
для своих Interactor
и Mocked
, Interactor Output
и выполнил тест, как показано ниже. правильно ли я делаю?
введите описание изображения здесь
не следует ли нам заканчивать тест внутри testFunction
, в данном случае внутри testSortFunction()
это вызывает notifySortedNames()
в Mock Interactor Output Class
, и я протестировал внутри него вариант использования. Я предполагаю, что это неправильный путь.
как я могу протестировать этот сценарий внутри testFunction()
. надеюсь, ваша помощь с этим.
Interactor
class DetailInteractor: DetailInteractorInput {
var output: DetailInteractorOutput?
init(output: DetailInteractorOutput) {
self.output = output
}
func sortNames(names: [String]) {
let sorteNames = names.sorted(by: { $0 < $1 })
output?.notifySortedNames(names: sorteNames)
}
}
Interactor Test Class
import XCTest
@testable import UnitTesst
class DetailInteractorTest: XCTestCase {
var interactor: DetailInteractor!
var output: DetailInteractorOutput!
override func setUpWithError() throws {
output = DetailInteractorOutputMock()
interactor = DetailInteractor(output: output)
}
override func tearDownWithError() throws {
}
func testSortFunction() throws {
let names = ["Japan", "France", "Australia"]
interactor.sortNames(names: names)
}
func testPerformanceExample() throws {
self.measure {
}
}
}
// Mock Test Classes
class DetailInteractorOutputMock: DetailInteractorOutput {
func notifySortedNames(names: [String]) {
let expected = ["Australia", "France", "Japan"]
XCTAssertEqual(expected[0], names[0])
XCTAssertEqual(expected[1], names[1])
XCTAssertEqual(expected[2], names[2])
}
}
Спасибо !!