33

私は周りを見回し、さまざまなことを試しましたが無駄でした。インターウェブ上に出回っている例は少なく、IMHO は非常に単純です。私のユースケース:

(以下の「itocNetworkHandler」はモックです)

when: "we're doing stuff"
    StandardResponse response = cms.doCardStuff("123", "111", order)
....
then: "we get proper calls and response object"
    1 * cms.itocNetworkHandler.doNetworkCall(
            { it instanceof ReplacementRequestRecord
            }, StandardResponseRecord.class) >> record

モックの「doNetworkCall」にパラメーター(「it」)を保存したいと思います。

パラメータが必要な理由は、テストしているオブジェクトがパラメータを取り、何かを行い、新しいオブジェクトを作成し、それをモックに渡すことになっているためです。作成されたオブジェクトが想定どおりに見えることを確認したいと思います。

ポインターは大歓迎です。

4

1 に答える 1

48

次のように引数を取得できます。

// must be declared before when-block (or inside Specification.interaction {})
def captured

when:
...

then:
1 * mock.doNetworkCall(...) >> { record, recordClass -> 
    // save the argument
    captured = record
    ...
}
// use the saved argument
captured == ...

とはいえ、多くの場合、引数の制約で期待されるレコードをチェックするなど、より簡単な解決策があります (例: ...doNetworkCall( { it == ... } ))。

于 2013-05-02T07:29:37.107 に答える