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?
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 –
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
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 –