Skip to content

Instantly share code, notes, and snippets.

@cjnevin
Created October 25, 2017 17:46
Show Gist options
  • Save cjnevin/b85fed616e1114da4dee87c914f67741 to your computer and use it in GitHub Desktop.
Save cjnevin/b85fed616e1114da4dee87c914f67741 to your computer and use it in GitHub Desktop.
Mock
import Foundation
import RxSwift
import Nimble
class Mock<T> {
private var object: T
private var count: Int = 0
init(object: T) {
self.object = object
}
func mock(_ object: T) {
self.object = object
}
func execute() -> T {
self.count += 1
return self.object
}
func expectCount(toEqual expected: Int = 1) {
expect(self.count).to(equal(expected))
}
}
@cjnevin
Copy link
Author

cjnevin commented Oct 25, 2017

Usage:

struct SomeMockRepository {
   let someMethodMock = Mock(object: Completable.empty())
   func someMethod() -> Completable {
      return someMethodMock.execute()
   }
}

Test:

class SomeUseCaseSpec: QuickSpec {
    override func spec() {
        describe("some description") {
            var repository: SomeMockRepository!
            var useCase: SomeUseCase!

            beforeEach {
                repository = SomeMockRepository()
                useCase = SomeUseCase(repository: repository)
            }
            
            it("calls repository") {
                _ = try? useCase.someMethod().toBlocking()
                repository.someMethodMock.expectCount()
            }
        }
    }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment