Je voudrais être en mesure de mettre en place progressivement un simulacre (en utilisant Meck), de sorte que les attentes pour différents appels soient définies dans différentes fonctions de configuration de test. Je pensais que merge_expects
pourrait faire l'affaire. Mais je vois des résultats inattendus:Comment puis-je configurer progressivement un simulacre à l'aide de Meck?
default__second_expect_overwrites_first_expect_test() ->
meck:unload(),
meck:new(womble, [non_strict]),
meck:expect(womble, sleep, fun(8) -> ok end),
meck:expect(womble, sleep, fun(24) -> comatose end),
?assertEqual(comatose, womble:sleep(24)),
?assertError(function_clause, womble:sleep(8)).
merge_expects__second_expect_has_no_effect_test() ->
meck:unload(),
meck:new(womble, [non_strict, merge_expects]),
meck:expect(womble, sleep, fun(8) -> ok end),
meck:expect(womble, sleep, fun(24) -> comatose end),
?assertError(function_clause, womble:sleep(24)),
?assertEqual(ok, womble:sleep(8)).
Je sais que je peux utiliser la solution suivante, mais cela enlaidir mes tests:
workaround_test() ->
meck:unload(),
meck:new(womble, [non_strict]),
meck:expect(womble, sleep, [{[8], ok}, {[24], comatose}]),
?assertEqual(comatose, womble:sleep(24)),
?assertEqual(ok, womble:sleep(8)).
a confirmé que le corrige - merci Adam. Le seul endroit où je pourrais continuer à utiliser 'expect/3' est de créer un simulacre comme ceci:' meck: attendez (m2, mult42, fun (X) -> X * 42 end). ' – MrBlueSky
clauses de fonction est difficile, car ils peuvent avoir des gardes. Ceci n'est pas implémenté dans Meck actuellement. –