

ログイン前提のAPIたちのテストケースを作成したいのですが、前段としてログイン処理が必要になります。  
テスト実行前にログイン処理をして、その戻り値(セッションID)を使い回してテストケースを実行する必要があるのですがどうすればよいでしょうか？  
ログイン処理は一回だけで済ませたいです。  
このまま実行すると`Could not create an instance of HogeSpec`とインスタンス化できないと言われてしまいます。

[code]

    class HogeSpec extends Specification {
    
      // このuserSessionIdを各テストケースで使いたい
      val userSessionId = BaseSpec.beforeAuth()
    
      "hogeAPIのテスト" should {
        "ステータス200が返ってくること" in {
          // do something
          // userSessionIdを使ってAPIをテストしたい
        }
      }
    
      "fugaAPIのテスト" should {
        "ステータス200が返ってくること" in {
          // do something
          // userSessionIdを使ってAPIをテストしたい
        }
      }
    }
    
[/code]


CC BY-SA 3.0
2015-10-22T08:08:32.443
17937
2016-04-20T10:05:58.887
2015-10-22T09:29:10.033
3397
3397
question
scala playframework
specs2でテスト実行前に共通の処理をしたい


自己解決しました。

`lazy`で遅延評価にすることでエラーの回避ができました。  
これでuserSessionIdを使い回せるようになりました。  
特別`BeforeExample`などを使う必要はありませんでした。

[code]

    - val userSessionId = BaseSpec.beforeAuth()
    + lazy val userSessionId = BaseSpec.beforeAuth()
    
[/code]

こちらの解答が参考になったので共有します。  
<https://stackoverflow.com/questions/21830495/specs2-could-not-create-an-
instance>


CC BY-SA 3.0
2015-10-23T01:35:28.140
17962
2015-10-23T01:35:28.140
2017-05-23T12:38:56.083
-1
3397
17937
answer