【发布时间】:2018-09-30 16:21:17
【问题描述】:
我目前正在尝试了解 Swift 4 中的单元测试。 我有一个类,它有一个设置我的视图控制器的方法。
我想确保此方法正确设置 ViewController 上的标题。
但是我不明白如何编写这个测试?
这是我目前的代码和测试。
目前我的测试失败了:
XCTAssertEqual failed: ("nil") is not equal to ("Optional("Favourites")") -
如何测试这种行为?任何帮助将非常感激。
控制器
class MainTabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
setupTabBar()
setupViewControllers()
}
// MARK:- Setup
fileprivate func setupViewControllers() {
viewControllers = [
generateNavigationController(with: UIViewController(), title: "Favourites", image: UIImage(imageLiteralResourceName: "favorites")),
generateNavigationController(with: UIViewController(), title: "Search", image: UIImage(imageLiteralResourceName: "search")),
generateNavigationController(with: UIViewController(), title: "Downloads", image: UIImage(imageLiteralResourceName: "downloads"))
]
}
fileprivate func setupTabBar() {
tabBar.tintColor = .purple
}
// MARK:- Helpers
fileprivate func generateNavigationController(with rootViewController: UIViewController, title: String, image: UIImage) -> UIViewController {
let controller = UINavigationController(rootViewController: rootViewController)
controller.tabBarItem.title = title
controller.tabBarItem.image = image
rootViewController.navigationItem.title = title
navigationController?.navigationBar.prefersLargeTitles = true
return controller
}
}
测试
import Foundation
import XCTest
@testable import Podcasts
class MainTabBarControllerTests: XCTestCase {
func testTheInitialViewControllerShouldHaveTitleFoo() {
let sut = MainTabBarController()
let _ = sut.viewDidLoad()
XCTAssertEqual(sut.navigationItem.title, "Favourites")
}
}
【问题讨论】:
标签: swift unit-testing xctest xctestcase