我正在编写一些与SSH交互的Elixir代码的测试。在我的测试中,我希望启动一个SSH服务器来运行我的代码。我更喜欢将此代码存储在测试目录中的其自己的文件中,并通过不同的测试进行导入。
但是,我并没有成功地实现它。我尝试创建一个名为 "test/ssh_server.ex" 的文件,其中包含一个"SSHServer"模块,但是当我在我的测试中添加“import SSHServer”时,出现以下错误:
(CompileError) test/end_to_end_test.exs:13: module SSHServer is not loaded and could not be found
我是否遗漏了什么?是否有一种方法强制"mix test"导入我的test/ssh_server.ex文件?
但是,我并没有成功地实现它。我尝试创建一个名为 "test/ssh_server.ex" 的文件,其中包含一个"SSHServer"模块,但是当我在我的测试中添加“import SSHServer”时,出现以下错误:
(CompileError) test/end_to_end_test.exs:13: module SSHServer is not loaded and could not be found
我是否遗漏了什么?是否有一种方法强制"mix test"导入我的test/ssh_server.ex文件?
.exs
,因为它永远不会被编译。另一种选择是告诉Mix将所有内容编译到一个特殊的目录中,例如test/support。Phoenix在这里执行了这个操作:https://github.com/phoenixframework/phoenix/blob/db2f953f24973fab8aa2aab3bd8fc9c87a17adc8/installer/templates/new/mix.exs#L10 - José ValimCode.load_file("priv/repo/seeds.exs")
进行播种,这对于测试之前的播种非常有效。 - user4275029Code.require_file
代替 load。这将确保文件只被加载一次。我也同意使用.exs
扩展名。这就是 ecto 的做法:https://github.com/elixir-ecto/ecto/blob/master/test/ecto/test_helper.exs - Steven L.