我的应用程序回调启动Supervisor与单元测试冲突。
当我尝试运行单元测试时,由于我的进程已经启动,因此我得到了类似{:error, {:already_started, #PID<0.258.0>}}
的回调。
我是否可以仅为:dev
和:prod
执行应用程序回调,保持:test
环境清除启动代码?
我正在寻找类似的东西:
def application do
[
applications: [:logger],
mod: {MyApplication, [], only: [:dev, :prod]}
]
only: [:dev, :prod]
- 这是件
答案 0 :(得分:2)
我不知道这是否是在这种情况下处理测试的正确方法,但是这里是你如何做你要求的:
在mix.exs
:
def application do
rest = if(Mix.env == :test, do: [], else: [mod: {MyApp, []}])
[applications: [:logger]] ++ rest
end
对于下面的演示,我将以下内容添加到MyApp.start/2
:
IO.puts "starting app..."
演示:
$ MIX_ENV=dev mix
starting app...
$ MIX_ENV=prod mix
starting app...
$ MIX_ENV=test mix # no output
答案 1 :(得分:0)
一种解决方案是在测试套件运行之前终止该进程。例如,您可以执行以下操作:
dispatch_async(dispatch_get_main_queue(), ^{
//int indexValue = (int)[sections indexOfObject:string];
[rtable reloaddata];
NSIndexPath *rowIndexPath = [NSIndexPath indexPathForRow:0 inSection:6];
[self.rtable scrollToRowAtIndexPath:rowIndexPath atScrollPosition:UITableViewScrollPositionTop animated:NO];
});
这将确保在测试运行之前,该进程已被终止。