ネストされた関数をテストする方法はありますか (理想的には ScalaTest を使用)?
たとえばg()
、以下のコードでテストする方法はありますか:
def f() = {
def g() = "a string!"
g() + "– says g"
}
g
の外では見えませf
ん。
とにかく、テストは単体テストの概念を壊すと思いますg
。なぜなら、実装の詳細をテストするべきではなく、パブリック API の動作だけをテストするべきだからです。エラーから間違いまで追跡することはg
、テストがf
失敗した場合のデバッグ プロセスの一部です。
テストg
が重要な場合は、g
の外で (保護された) メソッドとして定義しますf
。ただし、それはあなたのデザインを壊すかもしれません。
別のアイデアは、元のコードassert
の の呼び出しの後に の呼び出しを配置することです。g
これはテスト中に実行され、プロパティが保持されない場合に例外が発生し、テストが失敗します。通常のコードにも含まれますが、assert
(およびコンパニオン) が省略可能であるため、コンパイラによって削除できます (たとえば、こちらを参照)。