Technofara

Golangエンジニア!仕事で必要になって勉強した事とか、新しい事とか色々まとめたりを緩くやります。技術系と思考系だけにしておきます、

specs2で事前、事後に処理を行いたい。そんなときは

specs2でテストを書いてると、テストの前に 事前や事後に処理を行いたい事があったので、メモ書き程度に書きました。

import org.specs2.mutable.{After, Specification} 
import org.specs2.specification.Scope

class BeforeAfterSpec extends Specification {

  //varは再代入可能                     
  var sample = "test1"                  
                                                         
  "変数の中身が変わるか" should {       
                                        
    "事前処理後" in new scope{          
      println("say exec")               
      sample must beEqualTo("test2")    
    }                                   
                                        
    "事後処理後" in {                   
      sample must beEqualTo("test3")    
    }                                   
  }             
  
  /*
  trait scope extends Scope{
    // 事前処理
    sample = "test2" 
  }
  */                        
                                        
  trait scope extends Scope with After{ 
    // 事前処理   
    sample = "test2"                       
    def after = {                       
      // 事後処理                       
      sample = "test3"                  
    }                                   
  }                                     
}                                       
                                        

traitでScopeを継承したscopeを作成し、その中に事前処理を書いておく 事前処理を行いたい場合は、in new scopeの様にinのあとにScopeをnewするように記述する。

また、with Afterを記述して、その中に def after = {....}を書くことで、事後処理も定義できる。