我正在使用fakeS3测试S3连接,它运行良好。唯一的缺点是我必须在每次运行测试之前运行假S3服务器,否则S3测试会明显中断。
我想找到一种在测试运行之前运行此命令的方法:
fakes3 -r ~/.s3bucket -p 4567
理论上,这将启动Sinatra服务器,以便S3测试通过,但我不需要每次都启动一个单独的服务器。
我已经尝试了这个并且它没有充分的理由工作:
test: ["ecto.create --quiet", "ecto.migrate", "fakes3 -r ~/.s3bucket -p 4567", "test"]
这不起作用,因为它不是混合任务。
我也可能以错误的方式思考这个问题。如何在测试之前运行命令,这是考虑这个问题的正确方法吗?
答案 0 :(得分:2)
只需使用ExUnit.Callbacks.setup_all/1
:
def fakes3(_context) do
System.cmd("fakes3", ~w|-r ~/.s3bucket -p 4567|)
:ok
end
setup_all :fakes3
以上是用于测试S3的情况。
顺便说一下,这也可以用mix
来完成。它有run
任务,它接受要运行的脚本或表达式作为参数的eval:
test: [
"ecto.create --quiet",
"ecto.migrate",
~S[run -e "System.cmd(~s|fakes3|, ~w|-r ~/.s3bucket -p 4567|)"],
"test"
]