Хорошо, я использую Мек, и я потерян. Мой первый язык (который я писал около 7 месяцев) - это Ruby, поэтому я, похоже, не могу обмануть моего мозга вокруг Meck. Я все равно получаю Руби. Надеюсь, кто-то может мне помочь. Кроме того, я только писал Erlang в течение недели.Как издеваться над объектами в Эрланге с помощью Meck?
Обновленный кодекс (но насмешливый до сих пор не работает) ...
У меня есть
console_io
модуль суфлера Erlang, который выглядит следующим образом:
-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]).
Мой тест теперь выглядит следующим образом это:
-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).
ошибка я получаю это:
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
Я хочу высмеять (заглушку?), Чтобы получить функцию в моем тесте, чтобы get вернул «aaaa», а затем, когда я утверждаю на get_guess(), он должен равняться ["a", "a", " a "," a "].
Как это сделать?
Большое вам спасибо! Я попытался добавить имя модуля в функцию в вызове («изменить вызов в угадывании на prompter: gets()»). К сожалению, это не сработало. Итак, я в конечном итоге вытащил get() в свой отдельный модуль, который я мог затем издеваться над инструкциями от kjw0188. – Kelly