有人可以举例说明如何在Elixir中模拟目录列表吗?

时间:2015-09-23 11:59:45

标签: unit-testing elixir

在Python中,您可以执行类似的操作,通常用于单元测试:

>>> import os
>>> from mock import MagicMock
>>> os.listdir = MagicMock(return_value=['file1.txt', 'file2.txt', 'file3.txt'])
>>> os.listdir('./test')
['file1.txt', 'file2.txt', 'file3.txt']

你如何在Elixir中实现同样的目标?

1 个答案:

答案 0 :(得分:0)

据我所知,没有Elixir特定的模拟框架。有Meck用于模拟Erlang,并且可以从Elixir调用。我对这里的用例不太清楚。如果您需要从File.ls获得的伪装文件列表,那么我只需将调用包含在另一个函数内的 File.ls 中,并构建该函数的模拟版本。代码如下所示:

defmodule MyFiles do
  def get_file_list(dir, mock) do
    if mock, do:["file1.txt", "file2.txt", "file3.txt"], else: (File.ls(dir))
  end
end

你会这样称呼它:

MyFiles.get_file_list(".", false)
#Actual list of files

MyFiles.get_file_list(".", true)
["file1.txt","file2.txt", "file3.txt"]

在Elixir Lang Talk邮件列表中,模拟等等都是recently discussed

编辑:Per Patrick Oscity有一个Elixir wrapper for Meck