我很乐意在Elixir / Phoenix中编写集成测试一段时间,但我最近添加了Exq来处理后台任务。我只是想知道其他Exq(或等效的)如何在Integration测试中处理对排队任务的调用。我真的不想在测试期间将这些任务排队。
答案 0 :(得分:2)
有一个great article about such things。基本上,如果您有不想在测试期间执行的调用,请传递使其成为参数的模块。
def my_func(arg1, queue \\ Exq) do
queue.somoething(arg1)
end
这样在你的代码中你通常可以像my_func("argument")
之前那样调用它,但是在你的测试代码中你可以像这样传递一个模拟:
defmodule ExqMock do
def something(arg1) do
:return_some_static_value
end
end
test "my_func works" do
assert my_func("something", ExqMock) == :return_some_static_value
end