簡體   English   中英

如何在Scala REPL中與Specs匹配器一起玩?

[英]How to play with Specs matchers in Scala REPL?

在調試或探索規范功能時,在REPL(Scala解釋器)中鍵入它們,而不是在包含規范的文件中使用maven運行它會更有利。 在REPL中創建與Specification對象相同的“環境”的最佳方法是什么?

更新:在REPL中嘗試使用規范匹配器的最簡單方法似乎是定義一些輔助子類並在其主體內使用表達式:

scala> class S extends Specification { override def toString = { reportSpecs; "" } }
defined class S

scala> new S { 1 mustEqual 2 }
Specification "anon"

  x example 1
    '1' is not equal to '2' (<console>:10)

Total for specification "anon":
Finished in 0 second, 4 ms
1 example, 1 expectation, 1 failure, 0 error

您可以使用scala -classpath啟動Scala控制台,並為規范和在規范中使用的其他庫(例如JUnit,Scalacheck)提供必要的jar。 或者,您可以使用SBT中的控制台功能以正確的類路徑啟動控制台。

進入控制台后,您可以定義規范並執行,如下所示。

Welcome to Scala version 2.8.0.Beta1-RC5 (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_15).
Type in expressions to have them evaluated.
Type :help for more information.

scala> object Foo extends org.specs.Specification {
     |    "1 + 1" in { (1 + 1) must_== 2 }         
     | }                                           
defined module Foo

scala> Foo.reportSpecs
Specification "Foo"

  + 1 + 1

Total for specification "Foo":
Finished in 0 second, 184 ms
1 example, 1 expectation, 0 failure, 0 error

res0: Foo.type = Foo

您可能還想嘗試SBT中的連續測試運行程序,它在每次保存.scala文件后都會自動重新編譯並運行測試。 在SBT控制台中,運行> ~test 〜test

我不了解Specs,但是我已經使用ScalaCheck做到了,它真正需要的只是在類路徑中包含其JAR。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM