Исключая приемник событий приложения в тестировании? - PullRequest
0 голосов
/ 27 ноября 2018

Я столкнулся с проблемой при выяснении этого.

Я использую кеширование в своем приложении и загружаю его при запуске приложения с использованием прослушивателей.

@EventListener(ApplicationReadyEvent.class)
public void LoadCache() {
    refreshCache();
}

public void refreshCache() {
    clearCache(); // clears cache if present
    populateCache();
}
public void populateCache() {
    // dao call to get values to be populated in cache
    List<Game> games = gamesDao.findAllGames();
    // some method to populate these games in cache.
}

Это прекрасно работает, когда я запускаю приложение.Проблема, однако, возникает, когда я запускаю тестовые случаи, при запуске установки вызывается LoadCache().Я не хочу, чтобы это выполнялось во время выполнения тестов.

Это пример теста

@RunWith(SpringRunner.class)
@SpringBootTest(classes = GameServiceApplication.class)
public class GameEngineTest {
    @Test
    public void testSomeMethod() {
        // some logic
    }
}

1 Ответ

0 голосов
/ 28 ноября 2018

Если вы можете переместить свой EventListener в отдельный класс и сделать его как Bean, то вы можете использовать mockBean в своих тестах для имитации реальной реализации.

@Component
public class Listener {

    @Autowired
    private CacheService cacheService;

    @EventListener(ApplicationReadyEvent.class)
    public void LoadCache() {
        cacheService.refreshCache();
    }
}

@Service
public class CacheService {

    ...

    public void refreshCache() {
        ..
    }

    public void populateCache() {
        ..
    }   
}


@RunWith(SpringRunner.class)
@SpringBootTest
public class CacheServiceTest {

    @MockBean
    private Listener listener;

    @Test
    public void test() {
        // now the listener mocked and an event not received.
    }
}

или использовать профили для запуска этогослушатель только в производственном режиме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...