現在のアプリケーションですべてのネットワークコールでsiestaを使用しようとしています。 いつものように、私はすべてが期待通りに働いていることを保証するUTを書いています。 私は現在、シエスタPUTコールでUTと闘っています。私はAlamofireと同じようにコールをスタブすることができません。ここiOS - シエスタコールをスタブする方法
は昼寝コールのコードである:ここ
func rateSession(sessionId: Int, rating: Int, completionHandler: (Bool -> Void)? = nil) {
Api.shared.resource("session/" + String(sessionId) + "/rate")
.withParam("user_id", userId)
.request(.PUT, json: ["rate": rating])
.onSuccess { _ in
print("siesta call ok")
completionHandler?(true)
}
.onFailure { _ in
print("siesta call failed")
completionHandler?(false)
}
}
は(MockingJayを使用して)昼寝呼び出しスタブおよびテストするために使用されるコードである:
// Given
let sessionId = 42
let sessionService = SessionService(userId: "42")
var rateSessionSuccess = false
self.stub(http(.PUT, uri: "http://demo.usievents.com/api/v1/session/42/rate?user_id=42"), builder: http(204))
// When
sessionService.rateSession(sessionId, rating: 1) { success in
rateSessionSuccess = success
}
// Then
expect(rateSessionSuccess).toEventually(beTrue())
印刷要求とスタブ要求がありません差を示してください。 siestaの代わりにalamofireを使用すると、スタブが呼び出され、想定されるすべてのユースケースをテストするコール応答を変更できます。
シエスタはちょうどMockingJayがサポート 'NSURLConnection'を、使用していますので、ほとんどの場合、あなたのスタブはシエスタを作っているコールに一致していません。あなたが 'stub(すべて、失敗(NSError()))'を実行すると、それはシエスタ呼び出しをインターセプトしますか?フルSiestaロギングを有効にした場合、HTTPがあなたのスタブと正確に一致していますか? –