2015-06-04 41 views
13

Piszę testy kodu Elixir, który współdziała z SSH. W moich testach chciałbym uruchomić serwer SSH, na którym mogę uruchomić mój kod. Wolałbym przechowywać ten kod w jego własnym pliku w katalogu testowym i importować go za pomocą różnych testów.Importowanie kodu testowego w teście jednostki eliksiru

Nie udało mi się jednak sprawić, by działało to zbyt dobrze.

Próbowałem tworzenia pliku test/ssh_server.ex zawierający moduł SSHServer, ale kiedy dodać import SSHServer do moich testów, otrzymuję:

(CompileError) testów/end_to_end_test.exs: 13: Moduł SSHServer nie jest załadowany i nie można go znaleźć

Czy brakuje mi czegoś? Czy istnieje sposób na wymuszenie, aby mix test zaimportować plik test/ssh_server.ex?

Odpowiedz

13

Ja obecnie mam obejść poprzez ręczne ładowanie kodu z mojego pliku test_helper.exs:

Code.load_file("test/ssh_server.ex") 
+10

ten jest dobrym rozwiązaniem. Nadałbym też nazwę pliku '.exs', ponieważ nigdy nie został skompilowany. Inną opcją jest poinformowanie Mix, aby skompilował wszystko również w specjalnym katalogu, takim jak test/wsparcie. Phoenix robi to tutaj: https://github.com/phoenixframework/phoenix/blob/db2f953f24973fab8aa2aab3bd8fc9c87a17adc8/installer/templates/new/mix.exs#L10 –

+0

Używam tego do inicjowania przed testami z 'Code.load_file (" priv /repo/seeds.exs ")' w moim teście 'setup' i działa jak urok. – ibgib

+2

Poszedłbym z 'Code.require_file' zamiast obciążenia. Dzięki temu plik zostanie wczytany tylko raz. Zgadzam się również na użycie rozszerzenia '.exs'. Tak postępuje ecto: https://github.com/elixir-ecto/ecto/blob/master/test/ecto/test_helper.exs –