Slide 48
Slide 48 text
Add Unit Tests
func testLogin_showsErrorIfAlreadyLoggedIn() {
let accountManager = SuccessfulAccountManager()
accountManager.login(username: "", password: "")
let viewModel = MainViewModel(accountManager: accountManager)
viewModel.login(username: "", password: "")
XCTAssertEqual(viewModel.labelText, "Log out first.")
}
func testLogout_asksToLoginAgain() {
let accountManager = SuccessfulAccountManager()
accountManager.login(username: "", password: "")
let viewModel = MainViewModel(accountManager: accountManager)
viewModel.logout()
XCTAssertEqual(viewModel.labelText, "Please log in.")
}
func testLogout_promptsToLoginIfNotLoggedIn() {
let accountManager = SuccessfulAccountManager()
let viewModel = MainViewModel(accountManager: accountManager)
viewModel.logout()
XCTAssertEqual(viewModel.labelText, "Log in first.")
}
}
The message is checked in this example, but checking
a state parameter or flag makes a unit test stable.