2016-12-24 1 views
1

Récemment j'ai écrit la fonction suivante:"test mix" Elixir considère des exemples de @DOC que les tests

@doc """ 
    Creates a new deck, shuffles its cards and retrieves a hand of 
    cards from it. 
    The `hand_size` argument indicates the size of the hand. 

    ## Examples 
     iex> {hand, _deck_remainder} = Cards.create_hand 2 
     iex> hand 
     ["Ace of Clubs", "Four of Hearts"] 
    """ 
    def create_hand(hand_size) do 
    create_deck 
    |> shuffle 
    |> deal(hand_size) 
    end 

Points à considérer:

  • create_deck/0 retourne une liste de chaînes comme ["Two of Clubs", "Four of Hearts"]
  • shuffle/1 prend une liste de chaînes et les mélange en utilisant Enum.shuffle/1
  • deal/2 un tuple comme {["Ace of Spades"], ["Five of Clubs"]}

Puis j'ai couru la tâche mix test et l'erreur suivante est apparue:

ERROR

On dirait que test de mélange envisage les exemples dans les annotations de @DOC comme des tests unitaires.

En raison de shuffle/1 organise aléatoirement les chaînes dans la liste, l'exemple (en tant que test unitaire) se bloque.

Je voudrais exclure ces exemples de mix test ... Est-ce une bonne idée de le faire? Si oui, comment puis-je les exclure?

+0

voir https://hexdocs.pm/ex_unit/ExUnit.DocTest.html vous devez désactiver 'doctest' pour votre module. et à l'avenir, veuillez inclure les erreurs sous forme de texte et non d'image. – sobolevn

+0

Merci pour l'information et la suggestion, @sobolevn – Jovanny

Répondre

2

Vous avez probablement copié un code de test standard qui active les doctests par défaut. Comme:

defmodule MyModule.Test do 
    use ExUnit.Case, async: true 
    doctest MyModule 
end 

Supprimez le bit doctest et tout devrait bien se passer. Vous pouvez bien sûr aussi formater le commentaire pour ne pas ressembler à un doctest :-)

+0

Merci = D !! Je n'avais pas remarqué cette ligne dans le module. – Jovanny