任务队列任务中的java单元测试请求超时
根据available documentation,appengine测试助手类LocalServiceTestHelper
可以模拟来自ApiProxy.getCurrentEnvironment().getRemainingMillis()
的结果
只要代码在创建帮助程序的同一线程中运行,这一切都可以正常工作,但是当测试是多线程的(例如测试延迟的任务)时,第二个线程似乎不会使用模拟响应
如何让助手类在任务队列任务中设置ApiProxy.getCurrentEnvironment().getRemainingMillis()
的返回值强>
# 1 楼答案
调用
LocalServiceTestHelper.setUp()
只会在当前线程中设置您的环境,正如您所发现的那样调用
setUp()
后,您应该能够使用ApiProxy.Environment testEnv = ApiProxy.getCurrentEnvironment()
获得刚刚设置的环境;在总是返回testEnv
的ApiProxy.EnvironmentFactory
实现中包装testEnv
。然后,调用ApiProxy.setEnvironmentFactory
,传入新工厂这将导致在所有线程中使用相同的环境
该方法未经测试,但根据doc,它看起来是合理的