Arquitetura para testes
Tenho num sistema uma funcionalidade do usuário "montar" um relatório, dizendo o que quer de gráficos e outras informações. Então tenho um domain Relatorio que representa um modelo de relatório montado por um usuário, e este domain tem uma coleção de ElementoRelatorio, que representam os elementos que devem compor este relatório.
Dependendo da quantidade de informações para processar, e do numero de elementos, a geração do relatório propriamente dito, para ser apresentado ao usuário, pode levar alguns segundos até um minuto, então o processo precisa ser em background. Além disso, a apresentação pode ser numa página html dentro do site, ou pdf ou docx. Como a geração é custosa, eu não quero gerar um relatório do zero toda vez que o usuário quiser num formato diferente então quando o usuário manda "gerar" um relatório, o que eu faço é mastigar todas as informações num json e persisto no banco, e na hora de renderizar em qualquer formato basta renderizar os dados já mastigados.
Estou tendo muita dificuldade em escrever testes para esta rotina de "mastigação de dados". Consigo testar a nível de unidade as rotinas individuais de processamento para cada tipo de "elemento", mas não o todo, principalmente por ser uma rotina em background, sendo mais especifico, garantir que:
[list=1][/list]O que me sugerem? Algum padrão, alguma forma de arquitetar isso para facilitar os testes, algum caso que posso tomar de exemplo?