[swift-evolution] [Pitch] @testable private members

Brent Royal-Gordon brent at architechies.com
Sun Feb 19 00:21:33 CST 2017


> On Feb 18, 2017, at 10:14 AM, Matthew Johnson via swift-evolution <swift-evolution at swift.org> wrote:
> 
> When writing unit tests sometimes it is necessary to artificially elevate a member to `internal` in order to make it visible to unit tests where it could otherwise be `private` or `fileprivate`.  We could introduce an `@testable` attribute that could be applied anywhere an access modifier is used.  This attribute would elevate the access modifier to `internal` when the module is imported using the `@testable import MyModule` syntax in a test suite.

	extension MyModel {
		public func load(fromJSON jsonData: Data) throws {
			...
		}
		
		private func parse(_ json: Data) -> Any { … }
	}
	
	extension MyModel {
		public func load(fromPropertyList plistData: Data) throws {
			…
		}
		
		private func parse(_ plist: Data) -> Any { … }
	}

What happens when you try to test `MyModel.parse(_:)`?

-- 
Brent Royal-Gordon
Architechies



More information about the swift-evolution mailing list