10

ネストされた関数をテストする方法はありますか (理想的には ScalaTest を使用)?

たとえばg()、以下のコードでテストする方法はありますか:

def f() = {
  def g() = "a string!"
  g() + "– says g"
}
4

2 に答える 2

9

gの外では見えませfん。

とにかく、テストは単体テストの概念を壊すと思いますg。なぜなら、実装の詳細をテストするべきではなく、パブリック API の動作だけをテストするべきだからです。エラーから間違いまで追跡することはg、テストがf失敗した場合のデバッグ プロセスの一部です。

テストgが重要な場合は、gの外で (保護された) メソッドとして定義しますf。ただし、それはあなたのデザインを壊すかもしれません。

別のアイデアは、元のコードassertの の呼び出しの後に の呼び出しを配置することです。gこれはテスト中に実行され、プロパティが保持されない場合に例外が発生し、テストが失敗します。通常のコードにも含まれますが、assert(およびコンパニオン) が省略可能であるため、コンパイラによって削除できます (たとえば、こちらを参照)。

于 2011-03-17T12:19:39.283 に答える