I am trying to write test cases for the test target. The app is running perfectly, but the test case failing with the mocking. Here is my code, please let me know if there any other solutions. How do I mock services?
Is there any other way to write a test case for the ViewCoontroller initializer?
class NavigationCodeTests: XCTestCase {
var subject: ViewController?
override func setUp() {
self.subject = ViewController(service: MockUserService())
_ = self.subject?.view
}
func test_user_service_not_nil() {
XCTAssertNotNil(self.subject?.service, "User service can't be nil after initialization of ViewController")
}
func test_user_service_should_have_user() {
self.subject?.userViewModel?.user.observe(on: self, observerBlock: { (user) in
XCTAssertNotNil(user?.name, "User service can't be nil after initialization of ViewController")
})
}
}
class MockUserService: UserService {
func fetch(_ completion: @escaping(_ user: User) -> Void) {
completion(User(name: "abc", contact: "124"))
}
}
class UserService: UserServiceDelegate {
func fetch(_ completion: @escaping(_ user: User) -> Void) {
completion(User(name: "Damu", contact: "12"))
}
}
protocol UserServiceDelegate {
func fetch(_ completion: @escaping(_ user: User) -> Void)
}