Ok, sto usando Meck e sono perso. La mia prima lingua (che scrivo da circa 7 mesi) è Ruby, quindi non riesco a spiegarmi come Meck si diverta ancora. Comunque ottengo Ruby beffardo. Sperando che qualcuno possa aiutarmi. Inoltre, ho solo scritto Erlang per una settimana.Come imitare gli oggetti in Erlang usando Meck?
Aggiornato codice (ma beffardo ancora non funziona) ...
Ho un
console_io
modulo suggeritore Erlang che assomiglia a questo:
-module(prompter).
-export([prompt/1, guess/0]).
prompt(Message) ->
console_io:gets(Message).
gets() ->
{_, [Input]} = io:fread("Enter: ", "~s"),
Input.
guess() ->
Guess_Input = gets(),
Guess_List = convert_guess_to_list(Guess_Input).
convert_guess_to_list(Guess_Input) ->
re:split(Guess_Input, "", [{return, list}, trim]).
La mia prova ora sembra questo:
-module(prompter_test).
-include_lib("eunit/include/eunit.hrl").
guess_1_test() ->
meck:new(prompter),
meck:expect(prompter, gets, fun() -> "aaaa" end),
?assertEqual(prompter:guess(), ["a","a","a","a"]),
?assert(meck:validate(prompter)),
meck:unload(prompter).
L'errore che sto ottenendo è questo:
01.235.Eshell V5.9.3.1 (abort with ^G)
1> prompter_test: guess_1_test (module 'prompter_test')...*failed*
in function prompter:guess/0
called as guess()
in call from prompter_test:guess_1_test/0 (test/prompter_test.erl, line 10)
in call from prompter_test:guess_1_test/0
**error:undef
Voglio prendere in giro (mozza?) La funzione ottiene nel mio test in modo che venga restituito "aaaa" e quindi quando asserisco su get_guess() dovrebbe essere uguale a ["a", "a", " aa"].
Come posso fare?
Grazie mille! Ho provato a fare aggiungere il nome del modulo alla funzione nella chiamata ("cambia la chiamata in attesa di suggerire: gets()"). Purtroppo non ha funzionato. Così, ho finito per estrarre gets() al proprio modulo separato che avrei potuto prendere in giro seguendo le istruzioni di kjw0188. – Kelly