更新機能 (データベースとの対話) の再試行ポリシーを実装しました。更新で例外がスローされた場合は、最大 10 回再試行します。私は midje で更新機能を嘲笑しています。初めて失敗し、2回目に成功することをシミュレートしたい。私はこれを試しました:
(fact "update is retried when failed"
(ud/ensure-data {:username ..username.. :data :h}) => ..result..
(provided
(ud/get-raw-user-data ..username..) => example-user-data-raw
(ud/update-user-data {:username ..username..
:version 1
:userdata {:data {:h {}}}}) =throws=> (Exception.)
(ud/update-user-data {:username ..username..
:version 1
:userdata {:data {:h {}}}}) => ..result..))
しかし、これはうまくいかないようです......応答は次のとおりです。
These calls were not made the right number of times:
(ud/update-user-data {:username ..username.., :version 1, :userdata {:homebases {:h {:sensors []}}}}) [expected at least once, actually never called]
ストリーム ( https://github.com/marick/Midje/wiki/Variant-prerequisite-arrows )も見つけましたが、例外と成功の呼び出しをストリームと組み合わせる方法がわかりません。