Skip to content

0.3.0

Compare
Choose a tag to compare
@stephencelis stephencelis released this 28 Jun 18:54
· 123 commits to main since this release
f821dcb
  • Added XCTUnimplemented, a function for constructing "unimplemented" closures that call XCTFail when invoked.

    Helpful for stubbing dependencies held in value types. For example, a common use of XCTest Dynamic Overlay:

    struct FactClient {
      var fetch: (Int) async throws -> String
    }
    
    extension FactClient {
      struct Unimplemented: Error {
        let endpoint: String
      }
    
      static let unimplemented = Self(
        fetch: { _ in
          XCTFail("Unimplemented: \(Self.self).fetch")
          throw Unimplemented(endpoint: "\(Self.self).fetch")
        }
      )
    }

    Can be simplified using XCTUnimplemented:

    extension FactClient {
      static let unimplemented = Self(
        fetch: XCTUnimplemented("\(Self.self).fetch")
      )
    }
  • Changed: XCTFail now causes a runtime warning when called outside of tests.