wunsh / elixir-docs-ru

Translation of official Elixir documentation into Russian
https://wunsh.ru/docs
36 stars 3 forks source link

Ошибка при тестировании в 'mix-otp/agent.md' #27

Closed letzabelin closed 4 years ago

letzabelin commented 4 years ago

Практиковался с тестовым приложением и, когда дошел до Agent, столкнулся с проблемой.

В файле bucket_test.exs есть строчка:

{:ok, bucket} = start_supervised KV.Bucket

При запуске тестов получал ошибку:

** (MatchError) no match of right hand side value: {:error, {{:EXIT, {:undef, [{KV.Bucket, :start_link, [[]], []}, {:supervisor, :do_start_child_i, 3, [file: 'supervisor.erl', line: 379]}, {:supervisor, :do_start_child, 2, [file: 'supervisor.erl', line: 365]}, {:supervisor, :handle_start_child, 2, [file: 'supervisor.erl', line: 671]}, {:supervisor, :handle_call, 3, [file: 'supervisor.erl', line: 420]}, {:gen_server, :try_handle_call, 4, [file: 'gen_server.erl', line: 661]}, {:gen_server, :handle_msg, 6, [file: 'gen_server.erl', line: 690]}, {:proc_lib, :init_p_do_apply, 3, [file: 'proc_lib.erl', line: 249]}]}}, {:child, :undefined, KV.Bucket, {KV.Bucket, :start_link, [[]]}, :permanent, 5000, :worker, [KV.Bucket]}}}

Даже полное копирование файлов не решило проблему. Тогда я решил написать тест по-другому:

{:ok, bucket} = KV.Bucket.start_link()

И тогда тесты прошли. Такой же подход и на elixir-lang.org.

На всякий случай вышлю пулреквест. Буду рад отклику)

letzabelin commented 4 years ago

Кстати, start_supervised начинает работать, когда в bucket.ex в определение функции start_link я добавляю параметр _opts, ну или любой другой.

rtrv commented 4 years ago

Closed by #28