2

私は現在|>、次のことを達成するために from scalaz を使用しています:

(4 |> (s => (s + " is smaller than 10" ! (s < 10 must beTrue)))

これにより.toString、テスト ケースの記述内でオブジェクトの を再利用できます。しかし、Specs2 は、フォルダーをスキャンしてテストのソースから何かを抽出するような複雑なものをサポートしているように見えるので、src彼らはこの特定のユース ケースについて考えたに違いありません。

, などもありますがGiven、非常WhenThen冗長に見えます。

では、説明とマッチャーに同じオブジェクトを再利用するにはどうすればよいでしょうか? 私の解決策は受け入れられると思いますが、括弧が私を悩ませています。実際には、次のようになります。

(Set((1,2),(3,4)) |> (s => s + " has Set(1,2) as component of 1" ! (graph.componentOf(s,1) must_== Set(1,2)))) 
4

1 に答える 1

2

例の本文が説明に非常に近い場合は、「auto-examples」を使用できます。

"some examples"     ^
{ 4 must be_<(10) } ^
{ 5 must be_<(10) }

その場合、例の本文は、sbtで実行されたときに説明として直接使用されます。

[info] some examples
[info] + 4 must be_<(10)
[info] + 5 must be_<(10)

何かがうまくいかない場合、失敗メッセージがより明確になるため、4 must be_<(10)代わりに期待値を書いたことに注意してください。(4 < 10) must beTrue

14 is not less than 10
        vs
the value is false

さらに多くの情報で失敗メッセージを拡張したい場合は、aka演算子を使用することもできます。

 (4 < 10) aka "four < ten" must beTrue

最後に、Given-When-Thenのより単純なバージョンがあり、例の説明を簡単に再利用できます。

 "4 is smaller than 10" !  { (s: String) => 
   s.split(" ").head.toInt must be_<(10) 
 }
于 2011-10-20T22:34:25.950 に答える