マクロ


expect(throws:_:sourceLocation:
performing:)


式が常に与えられた型のエラーを throw することを確認します。


iOS iPadOS Mac Catalyst macOS tvOS visionOS

watchOS Swift 6.0+ Xcode 16.0+

@discardableResult @freestanding(expression)
  macro expect<E, R>(
      throws errorType: E.Type,
      _ comment: @autoclosure () -> Comment? = nil,
      sourceLocation: SourceLocation = #_sourceLocation,
      performing expression: () async throws -> R
  ) -> E? where E : Error





パラメータ


errorType

throw されると予想されるエラーの型。expression任意の エラーを throw する可能性がある場合、または throw されるエラーの特定の型が重要でない場合は、(any Error).self を渡します。


comment

期待を説明するコメント。


sourceLocation

記録された期待と問題の原因となるソースの場所。


expression

評価されるべき式。



戻り値


期待値が渡たされた場合、expression によって throw された errorType のインスタンス。期待が失敗した場合、結果は nil になります。



以下で言及


Swift コード内のエラーのテスト



概観


expression 式が与えられた型のエラーを throw する べき 場合は、#expect() のこのオーバーロードを使用します。


#expect(throws: EngineFailureError.self) {
  FoodTruck.shared.engine.batteryLevel = 0
  try FoodTruck.shared.engine.start()
}

expression がエラーを throw しない場合、または errorType のインスタンスではないエラーを throw した場合、現在のタスクで実行中のテストに対して Issue が記録されます。expression によって返される値はすべて破棄されます。


注意

このマクロを Swift コンパイラのバージョン 6.1 未満で使用すると、値は返されません。


throw されたエラーが Error の別のインスタンスと等しいだけであれば、代わりに expect(throws:_:sourceLocation:performing:) を使用して下さい。



決して throw しない式


expression 式が全くエラーを throw しないようにするには、Never.self を渡すことができます。


#expect(throws: Never.self) {
  FoodTruck.shared.engine.batteryLevel = 100
  try FoodTruck.shared.engine.start()
}

expression がエラーを throw した場合、現在のタスクで実行中のテストに Issue が記録されます。expression によって返される値はすべて破棄されます。


テスト関数には throws で注釈を付けることができ、エラーを throw してテスト実行時に issue として記録することができます。expression によってエラーが throw されたときにテストを失敗させることが目的であり、式によってエラーが throw されないことを明示的に確認することが目的ではない場合、このマクロは使用しないでください。代わりに、問題のコードを単に呼び出し、自然にエラーを throw するようにしてください。





以下も見よ


エラーが throw されたか確認する


Swift コード内のエラーのテスト

コードがあなたの期待どおりにエラーを処理することを確認します。


macro expect<E, R>(throws: E, @autoclosure () -> Comment?, sourceLocation: SourceLocation, performing: () async throws -> R) -> E?

式が常に特定のエラーを throw することを確認します。


macro expect<R>(@autoclosure () -> Comment?, sourceLocation: SourceLocation, performing: () async throws -> R, throws: (any Error) async throws -> Bool) -> (any Error)?

式が常に何らかの条件に一致するエラーを throw することを確認します。

  廃止  


macro require<E, R>(throws: E.Type, @autoclosure () -> Comment?, sourceLocation: SourceLocation, performing: () async throws -> R) -> E

式が常に与えられた型のエラーを throw することを確認し、そうでない場合はエラーを throw します。


macro require<E, R>(throws: E, @autoclosure () -> Comment?, sourceLocation: SourceLocation, performing: () async throws -> R) -> E


macro require<R>(@autoclosure () -> Comment?, sourceLocation: SourceLocation, performing: () async throws -> R, throws: (any Error) async throws -> Bool) -> any Error

式が常に何らかの条件に一致するエラーを throw することを確認し、そうでない場合はエラーを throw します。

  廃止  














トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ