我有一个小的排序功能,Interactor
它需要一组String
s 并对其进行排序并通知Presenter
. 该功能按预期工作。
现在我只是尝试用 unit test覆盖该功能。Unit Test Class
所以我为我创建了一个Interactor
并进行Mocked
了Interactor Output
如下测试。我做对了吗?
我们不应该在里面结束测试吗
testFunction
,在这种情况下是在里面testSortFunction()
notifySortedNames()
这在里面触发,Mock Interactor Output Class
我在里面测试了用例。我想这是错误的方式。
我怎样才能在里面实现这个场景的测试testFunction()
?感谢您对此的帮助。
交互者
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)
}
}
交互测试类
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])
}
}
谢谢!!