我已经为更新功能(与数据库通信)实施了重试策略 - 如果更新引发异常,我最多重试 10 次。我正在用 midje 模拟更新功能。我想模拟它第一次失败和第二次成功。我试过这个:
(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),但我不知道如何将异常与成功调用与流结合起来。