1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Spockの書き方メモ

Last updated at Posted at 2019-10-31

Spockの書き方を毎回調べるのめんどくさかったのでまとめる
とりあえず、殴り書きのようにメモっておきます
レベル低くてすまん・・・

ブロックの説明

ブロック 説明
setup 前処理
when thenとセットで使用:テストしたいことを書く
then whenとセットで使用:テスト結果の比較を書く
expected 実行とチェックを1つにまとめて書く
cleanup 後処理
where パラメータを渡して結果をチェックする

プライベートメソッドのテスト

なんだかんだリフレクションを使う

        setup:
        Method method = testService.class.getDeclaredMethod("getTestMethod", 
                                          hiki1.class, hiki2.class, hiki3.class)
        method.setAccessible(true)

        when:
        def ls = (List<testDto>) method.invoke(testService, hiki1, hiki2, hiki3)

モックの書き方

serviceにDIされているtestServiceのメソッドをモック化する

def testService = Mock(TestService)
testService.getMethodMock(_, _) >> retObj
service.testService = testService

引数は _ で何かの値を示す。
基本的には引数3つなら (_, _, _)で良いのかなと
ここで、値を決めて書くとパラメータごとの振る舞いが設定できる
(1, _) と記述すれば、第一引数に1が渡ってきた場合の振る舞いを指定できる。

元の実装が動く状態で、一部モック化する

def testService = Spy(TestService)
testService.getMethodMock(_, _) >> retObj
service.testService = testService

Spyを使用すると、TestService自体メソッドは動作する
指定したメソッドは、モック化して値を返す

where句の書き方

where:
 isStatus | cmd    || expect
 true     | INSERT || true
 true     | DELETE || false
 false    | _      || false

パラメータを設定済みでNewする

def m = new TestObj(p1: "p1", p2: "p2")

こうすると、NewしたオブジェクトTestObjのp1,p2に値がセットされる
_

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?