Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // You implememt a Mock which conforms to the same protocol the ViewController is connected to
- class UserServiceMock: UserServiceInterface {
- var resultToReturn: Bool = false
- var errorToReturn: Error?
- func login(email: String, password: String, completion: (Bool, Error?)) {
- completion(resultToReturn, errorToReturn)
- }
- }
- class LoginTests: XCTestCase {
- let viewControllerToTest = ViewController()
- func testLoginFailed() {
- let mockService = UserServiceMock()
- mockService.resultToReturn = false
- mockService.errorToReturn = Error("no internet")
- viewControllerToTest.userService = mockService
- // Since this is an async call we need to wait for the callback in the test - otherwise we will not run long enought to get the response
- let loginExpectation = expectation(description: "should call login")
- viewController.login("testEmail", "testPassword", completion: { success in
- loginExpectation.fulfill()
- XCTAssertFalse(success, "the login should fail")
- })
- wait(for: loginExpectation, timeout: 0.1)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement