Тайм-аут запроса модульного тестирования в задаче очереди задач
Согласно имеющейся документации приложение помощник по тестированию движка LocalServiceTestHelper
может моделировать результат от ApiProxy.getCurrentEnvironment().getRemainingMillis()
,
Все это прекрасно работает, пока код выполняется в том же потоке, в котором создан помощник, но кажется, что когда тест является многопоточным (например, при тестировании отложенной задачи), второй поток не будет использовать смоделированный ответ.
Как получить вспомогательный класс для установки возвращаемого значения ApiProxy.getCurrentEnvironment().getRemainingMillis()
в задаче очереди задач?
1 ответ
Призвание LocalServiceTestHelper.setUp()
только установит вашу среду в текущем потоке, как вы нашли.
После звонка setUp()
, вы должны быть в состоянии получить только что настроенную среду, используя ApiProxy.Environment testEnv = ApiProxy.getCurrentEnvironment()
;заворачивать testEnv
в реализации ApiProxy.EnvironmentFactory
который всегда возвращается testEnv
, Затем позвоните ApiProxy.setEnvironmentFactory
, проходя на этом новом заводе.
final ApiProxy.Environment testEnv = ApiProxy.getCurrentEnvironment();
ApiProxy.setEnvironmentFactory(new ApiProxy.EnvironmentFactory() {
@Override
public ApiProxy.Environment newEnvironment() { return testEnv; }
};
Это должно привести к тому, что одна и та же среда будет использоваться во всех потоках.
Этот подход не проверен, но выглядит разумным в соответствии с документом.