7
私が書くつもりのサービスのテストケースを書く方法を理解しようとしています。Groovy HTTPBuilderレスポンスを模倣して
サービスは、HTTPBuilderを使用して一部のURLからの応答を要求します。 HTTPBuilderリクエストでは、成功または失敗のレスポンスを確認するだけです。私は私があることを主張することができますので、私のテストの成功/失敗のいずれかに応答を設定することができるようにHTTPBuilderを模擬することができるようにしたい、そう
boolean isOk() {
httpBuilder.request(GET) {
response.success = { return true }
response.failure = { return false }
}
}
:サービスの実装は、のような単純なものになります私のサービスのisOk
メソッドは、応答が成功するとTrueを返し、応答が失敗した場合はFalseを返します。
HTTPBuilderリクエストを模擬してGroovyTestCaseでレスポンスを設定する方法について、助けてもらえますか? result
フィールドがtrueの場合
class MockHttpBuilder {
def result
def requestDelegate = [response: [:]]
def request(Method method, Closure body) {
body.delegate = requestDelegate
body.call()
if (result)
requestDelegate.response.success()
else
requestDelegate.response.failure()
}
}
が、それ以外failure
、success
クロージャを呼び出します:
ありがとう:ここでは代わりにモッククラスのMockForを使用した例です。私はtrue/falseに '結果'を設定するものは理解していません。これはモックよりスタブのようなものではないでしょうか? – C0deAttack
テストを設定するときは、結果を自分で設定する必要があります。例えば。 '新しいMockHttpBuilder(結果:真)'。私はgroovy mockingを使用する代替案を追加しました。 – ataylor
Ataylorのレスポンスは良いですが、レスポンスのステータスを直接設定し、それを使ってマッピングから正しいクロージャを実行することを除いて、ほとんど同じ実装を思いつきました。しかし、これは本当にスタブ・モッキングです。私は正しいアプローチは、応答を与えるクライアントを模擬することだと思う。 – Gepsens