Ich schreibe Tests einiger Elixir-Code, der mit SSH interagiert. In meinen Tests möchte ich einen SSH-Server starten, auf dem ich meinen Code ausführen kann. Ich würde es vorziehen, diesen Code in einer eigenen Datei im Testverzeichnis zu speichern und durch verschiedene Tests importieren zu lassen.Importieren von Testcode in Elixier-Unit-Test
Ich konnte dies jedoch nicht zu gut funktionieren.
Ich habe versucht, einen SSHServer
Modul eine test/ssh_server.ex
Datei erstellt enthält, aber wenn ich import SSHServer
meine Tests hinzufügen, erhalte ich:
(CompileError) Test/end_to_end_test.exs: 13: Modul SSHServer nicht ist geladen und konnte nicht gefunden werden
Fehle ich etwas? Gibt es eine Möglichkeit, mix test
zu zwingen, meine Datei test/ssh_server.ex zu importieren?
Dies ist eine gute Lösung durchgeführt werden. Ich würde auch die Datei '.exs' nennen, da sie nie kompiliert wird. Eine andere Alternative ist, Mix anzuweisen, alles in einem speziellen Verzeichnis zu kompilieren, wie zum Beispiel test/support. Phoenix macht das hier: https://github.com/phoenixframework/phoenix/blob/db2f953f24973fab8aa2aab3bd8fc9c87a17adc8/installer/templates/new/mix.exs#L10 –
Ich benutze dies für das Seeding vor Tests mit 'Code.load_file (" priv /repo/seeds.exs ")' in meinem Test 'setup' und es funktioniert wie ein Zauber. – ibgib
Ich würde mit 'Code.require_file' statt laden gehen. Dadurch wird sichergestellt, dass die Datei nur einmal geladen wird. Ich stimme auch der Verwendung der Erweiterung ".exs" zu. Das ist der Weg, wie ecto es tut: https://github.com/elixir-ecto/ecto/blob/master/test/ecto/test_helper.exs –