Specs2 は、Acceptance 仕様 (必要に応じて Unit 仕様も) を扱う際に機能的なスタイルを促進します。
古いスタイル (変更可能なスタイル) を使用するリスクは、仕様Specs2 の哲学で言及されており、潜在的な望ましくない副作用に関係しています。
知っておくべき重要事項は次のとおりです。
副作用は仕様フラグメントを構築するためにのみ使用され、変数を変更することによって、失敗が発生するとすぐに例の実行を短絡するためにも使用されます (例外をスローすることによって)。例の本体でフラグメントをビルドしたり、同じ仕様を並行して実行したりすると、空が落ちるはずです。「コンテキスト」管理は、ケース クラスまたはトレイトで行われます (org.specs2.examples.MutableSpec を参照)。
同じ仕様を 2 回以上同時に実行したとしても、各仕様は他の仕様 (分離されたクラスのインスタンス) とは異なるため、同じ仕様を同時に実行する方法がわかりません。
確かに、specFragments
(可変変数):
protected[mutable] var specFragments: Fragments = new Fragments()
(スカラの意味で=>シングルトン)または他の共有のものではなく、a trait
呼び出されたで宣言されているため、各のインスタンスのローカル変数です。FragmentBuilder
object
specFragments
Specification
では、どのようなシナリオで同時実行メカニズムが危険にさらされる可能性があるのでしょうか?
Specs2 の機能的スタイルの利点を証明する真のシナリオ (愚かではない) を実際には理解していません。