Closed EnesKaraosman closed 6 months ago
@Mockable protocol MyProtocol { @available(iOS 15, *) func foo() }
And the generated code is below;
#if MOCKING final class MockMyProtocol: MyProtocol, Mockable { private var mocker = Mocker<MockMyProtocol>() @available(*, deprecated, message: "Use given(_ service:) of MockableTest instead.") func given() -> ReturnBuilder { .init(mocker: mocker) } @available(*, deprecated, message: "Use when(_ service:) of MockableTest instead.") func when() -> ActionBuilder { .init(mocker: mocker) } @available(*, deprecated, message: "Use verify(_ service:) of MockableTest instead.") func verify(with assertion: @escaping MockableAssertion) -> VerifyBuilder { .init(mocker: mocker, assertion: assertion) } func reset(_ scopes: Set<MockerScope> = .all) { mocker.reset(scopes: scopes) } init() { } @available(iOS 15, *) func foo() { let member: Member = .m1_foo try! mocker.mock(member) { producer in let producer = try cast(producer) as () -> Void return producer() } } enum Member: Matchable, CaseIdentifiable { case m1_foo func match(_ other: Member) -> Bool { switch (self, other) { case (.m1_foo, .m1_foo): return true } } } struct ReturnBuilder: EffectBuilder { private let mocker: Mocker<MockMyProtocol> init(mocker: Mocker<MockMyProtocol>) { self.mocker = mocker } func foo() -> FunctionReturnBuilder<MockMyProtocol, ReturnBuilder, Void, () -> Void> { .init(mocker, kind: .m1_foo) } } struct ActionBuilder: EffectBuilder { private let mocker: Mocker<MockMyProtocol> init(mocker: Mocker<MockMyProtocol>) { self.mocker = mocker } func foo() -> FunctionActionBuilder<MockMyProtocol, ActionBuilder> { .init(mocker, kind: .m1_foo) } } struct VerifyBuilder: AssertionBuilder { private let mocker: Mocker<MockMyProtocol> private let assertion: MockableAssertion init(mocker: Mocker<MockMyProtocol>, assertion: @escaping MockableAssertion) { self.mocker = mocker self.assertion = assertion } func foo() -> FunctionVerifyBuilder<MockMyProtocol, VerifyBuilder> { .init(mocker, kind: .m1_foo, assertion: assertion) } } } #endif
See there is no @available attribute in ReturnBuilder, ActionBuilder and VerifyBuilder structs
@available
ReturnBuilder
ActionBuilder
VerifyBuilder
@EnesKaraosman This is now fixed in 0.0.4
And the generated code is below;
See there is no
@available
attribute inReturnBuilder
,ActionBuilder
andVerifyBuilder
structs