0

Specs2を使用して検収試験を書いています。

ImpermanentGraphDatabaseメモリ内のNeo4jグラフを作成するために使用したいと思います。統合テストに最適です。

Neo4j用にSpring-Dataをセットアップしましたが、Springファイルの構成には次のものが含まれています。

<bean id="graphDatabaseService" class="org.neo4j.test.ImpermanentGraphDatabase" destroy-method="shutdown"/>

各Specを分離するために、オプションdestroy-method="shutdown"が通常ではなくSpecs2を考慮に入れているのではないかと思います。JUnitexample

要約すると、それぞれexampleに独自のメモリ内グラフインスタンスがあるのでしょうか、それともすべてのインスタンスで共有されるのでしょうか。

specs2は、SpecificationこれらすべてのSpecの例の実行に同じインスタンスを使用するため、適用できないと思います。実際、Specs2の機能スタイルでis()は、1つのインスタンスですべての例をエングロビンと呼ばれるのはメソッドだけです。

BeforeExampleまた、それぞれのデータベースをクリーンアップするためにトレイトを実装しようとしましexampleたが... Gived / Then / Whenスタイルでは、全体が一意であると見なされているようですexample。確かに、セパレーターは^従来のの代わりにあり!、後者は1つを表しexampleます。

ImpermanentGraphDatabse各ステップ(GivenまたはWhenまたはThenステップ)の前にインメモリデータベース()をクリーンアップしたい

4

1 に答える 1

2

あなたの問題についての私の理解は、Given/When/Then ステップの各グループの前に「新鮮な」データベースが必要だということです。

これを行うには、次のいずれかを実行できます。

  • Given/When/Then ステップの各グループの前にアクションを明示的に指定する

    Step(cleanupDatabase) ^
    "A given-when-then example for the addition" ^
      "Given the following number: ${1}"         ^ number1 ^
      "And a second number: ${2}"                ^ number2 ^
      "And a third number: ${3}"                 ^ number3 ^
                                                 end^
    Step(cleanupDatabase) ^
    "A given-when-then example for the addition" ^
     "Given the following number: ${1}"         ^ number1 ^
     "And a second number: ${2}"                ^ number2 ^
     "And a third number: ${3}"                 ^ number3 ^
                                             end
    
  • 関数を使用して各グループを宣言し、各グループの前にクリーンアップ ステップをマップします

    def `first example` =     
      "A given-when-then example for the addition" ^
        "Given the following number: ${1}"         ^ number1 ^
        "And a second number: ${2}"                ^ number2 ^
        "And a third number: ${3}"                 ^ number3 ^
                                                   end
    def `second example` =     
      "A given-when-then example for the addition" ^
        "Given the following number: ${1}"         ^ number1 ^
        "And a second number: ${2}"                ^ number2 ^
        "And a third number: ${3}"                 ^ number3 ^
                                                   end
    
    def is = Seq(`first example`, `second example`).foldLeft(Step():Fragments) { (res, cur) =>
      res ^ Step(cleanupDatabase) ^ cur 
    }
    
  • map仕様の機能を使用して一般的にそれを行う

    override def map(fs: =>Fragments) = fs.flatMap {
      // clean the database at the end of a G/W/T block
      case f if f == end => Seq(Step(cleanDatabase), end)
      case other         => Seq(other)    
    }
    
于 2013-01-24T22:49:20.607 に答える