2016-12-19 13 views
0

У меня следующие файлы. Если вы посмотрите в app.ex, то в заявлении говорится, что 2 + 2 равно 3. Я намеренно пытаюсь сделать это неудачным.Мой урок не возвращается правильно. Что я делаю неправильно

app.ex

defmodule App do 
    @doc """ 
     Adds two numbers 

     ## Examples 

     iex> App.add(2, 2) 
     3 

     """ 
    def add(a,b) do 
     a + b 
    end 


end 

app_test.exs

defmodule AppTest do 
    use ExUnit.Case 

    doctest App 
end 

В консоли набираю: mix test и результат:

Finished in 0.01 seconds 
0 failures 

Randomized with seed 547000 
+2

Это может показаться немного глупым, но я думаю, для примеров, которые будут выполняться Doctest, то 'IEX>' блок должен быть обязанными ** 4 ** пробелами, а не ** 2 **. Не могли бы вы попробовать? –

+0

Это было ...! – William

+2

FYI В Elixir 1.3.4 вы можете просто скопировать и вставить вышеуказанный код, и он работает. Кажется, это ограничение было недавно снято. –

ответ

2

Кажется, что смешивание не является плавником ding любых тестовых случаев вообще, в противном случае вы получили бы сообщение 12 tests, 0 failures вместо 0 failures

Это, вероятно, происходит из-за нестандартного именования вашего тестового файла. В Elixir тестовые файлы должны заканчиваться *_test.exs, вы использовали *.text.exs (может быть, опечатка).

Если вы переименуете свой тест на test/app_test.exs, он должен работать нормально.

+0

Идентификатор тестового файла с подчеркиванием. Я сделал ошибку в запросе stackoverflow – William

+0

И «текст» тоже опечатка? –

+0

:) Да, это было так. – William

3

Проблема, похоже, в форматировании вашего @doc. Я думаю, что примеры, которые должны быть правильно проанализированы и выполнены Doctest, должны быть отступом с пробелами.

Я вставив свой код здесь с обновленным форматированием для справки:

defmodule App do 
    @doc """ 
    Adds two numbers 

    ## Examples 

     iex> App.add(2, 2) 
     3 

    """ 
    def add(a,b) do 
    a + b 
    end 
end