Is this your app? Claim this page to add your own description, links and contact info. It's free. →

Rubicon

Rubicon at Mac App Store analyse

Cleverlance
0 ratings · Power index: 100
Version 3.0.0
Size 0 Bytes
Updated 2 months ago
Released 10 Mar 2019

How do you feel about this app?

Screenshots

Description

Swift parser + mock generator + Xcode extension https://github.com/raptorxcz/Rubicon Rubicon generates spys, stub, mocks and dummies for protocols. Generating methods for parent protocol is not supported. example: input: protocol Car { var name: String? { get } var color: Int { get set } @MainActor func go() func load(with stuff: Int, label: String) throws -> Int func isFull() -> Bool func download() async throws -> [String] } output: spy: final class CarSpy: Car { struct Load { let stuff: Int let label: String } var name: String? var color: Int var loadThrowBlock: () -> Void? var loadReturn: Int var isFullReturn: Bool var downloadThrowBlock: () -> Void? var downloadReturn: [String] var goCount = 0 var load = [Load]() var isFullCount = 0 var downloadCount = 0 init(color: Int, loadReturn: Int, isFullReturn: Bool, downloadReturn: [String]) { self.color = color self.loadReturn = loadReturn self.isFullReturn = isFullReturn self.downloadReturn = downloadReturn } func go() { goCount += 1 } func load(with stuff: Int, label: String) throws -> Int { let item = Load(stuff: stuff, label: label) load.append(item) try loadThrowBlock?() return loadReturn } func isFull() -> Bool { isFullCount += 1 return isFullReturn } func download() async throws -> [String] { downloadCount += 1 try downloadThrowBlock?() return downloadReturn } } stub: final class CarStub: Car { var name: String? var color: Int var loadThrowBlock: () -> Void? var loadReturn: Int var isFullReturn: Bool var downloadThrowBlock: () -> Void? var downloadReturn: [String] init(color: Int, loadReturn: Int, isFullReturn: Bool, downloadReturn: [String]) { self.color = color self.loadReturn = loadReturn self.isFullReturn = isFullReturn self.downloadReturn = downloadReturn } func go() { } func load(with stuff: Int, label: String) throws -> Int { try loadThrowBlock?() return loadReturn } func isFull() -> Bool { return isFullReturn } func download() async throws -> [String] { try downloadThrowBlock?() return downloadReturn } } dummy: final class CarDummy: Car { var name: String? { get { fatalError() } } var color: Int { get { fatalError() } set { fatalError() } } func go() { fatalError() } func load(with stuff: Int, label: String) throws -> Int { fatalError() } func isFull() -> Bool { fatalError() } func download() async throws -> [String] { fatalError() } } usage in tests: let carSpy = CarSpy() ... let a1 = carSpy.goCount == 1 let a2 = carSpy.load.count == 1 let a3 = carSpy.load[0].stuff == 2 let a4 = carSpy.load[0].label == "name" https://github.com/raptorxcz/Rubicon Xcode extension Xcode extension can generate test doubles for all or just selected protocols in the current file. The resulting test double can be written to the source file or pasteboard.

Estimates

Monthly Downloads > 2.2k
Est. Revenue ~ $900

Availability

Devices

MacDesktop

Pricing by country

Country Price
Canada free
China free
France free
Germany free
Italy free
Netherlands free
Portugal free
Spain free
UK free
India free
Japan free
Korea, Republic Of free
Poland free
Russia free
Turkey free
USA free
Ukraine free