Okej, używam Meck i jestem zagubiony. Moim pierwszym językiem (który piszę od około 7 miesięcy) jest Ruby, więc nie jestem w stanie otoczyć mojego mózgu kpiną z Meck. Ale kpię sobie z Ruby. Mam nadzieję, że ktoś mi pomoże. Poza tym piszę Erlanga tylko przez tydzień.Jak wyśmiać obiekty w Erlangu za pomocą Meck?
Aktualizacja Code (ale szyderczy nadal nie działa) ...
Mam Erlang
console_io
moduł prompterów, który wygląda tak:
-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]).
Mój próbny teraz wygląda to:
-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).
błąd dostaję to:
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
chcę drwić (niedopałek?) Funkcja pobiera w moim teście tak, że dostaje powróci „aaaa”, a następnie, kiedy dochodzić na get_guess() powinno wynosić [ „a”, „a”, " a "," a "].
Jak to zrobić?
Dziękuję bardzo! Próbowałem dodać nazwę modułu do funkcji w wywołaniu ("zmień wywołanie w odgadywaniu na monit: gets()"). To niestety nie zadziałało. Więc skończyłem wyciągając gets() do własnego oddzielnego modułu, który mógłbym następnie sfałszować zgodnie z instrukcjami od kjw0188. – Kelly