来自Func的TDD数据未在XCTest案例Swift中返回

时间:2018-08-01 14:15:24

标签: swift tdd xctest

这就是我的QuickAddViewController.swift文件中的内容

let exercisesData = ExerciseDatabase()

var workoutTypesDictionary = Dictionary<String,Dictionary<String,Array<String>>>()

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.
    workoutTypesDictionary = self.exercisesData.exercisesByWorkoutType

}

func getWorkoutTypes() -> [String] {
    var workoutTypesArray : [String] = []
    for workoutType in workoutTypesDictionary.keys {
        workoutTypesArray.append(workoutType)
    }

    return workoutTypesArray
}

这是我的QuickAddViewTest.swift文件

class QuickAddViewTests: XCTestCase {

var quickAddViewController : QuickAddViewController!

override func setUp() {
    super.setUp()
    // Put setup code here. This method is called before the invocation of each test method in the class.

    quickAddViewController = QuickAddViewController()
}

override func tearDown() {
    // Put teardown code here. This method is called after the invocation of each test method in the class.
    super.tearDown()
}

func testGetWorkoutTypes() {

    let workoutTypesArray = quickAddViewController.getWorkoutTypes()

    let expectedArray = ["Weight Training", "Sports & Recreation", "Body Weight", "Cardio"]

    print("Workout Array: \(workoutTypesArray)")

    print("Expected Array: \(expectedArray)")

    XCTAssertEqual(workoutTypesArray, expectedArray)

}

当我运行应用程序并打印getWorkoutTypes()时,该函数返回正确的值。但是,当我尝试在testGetWorkoutTypes()中返回相同的值时,什么也没有返回,并且测试失败。

1 个答案:

答案 0 :(得分:1)

添加

quickAddViewController.loadViewIfNeeded()

这会导致连接情节提要板连接(这使得其他测试成为可能)并触发回拨到viewDidLoad()的呼叫。