Nous migrons les ressources Apache CXF vers Spring MVC. Il est arrivé qu'il est préférable pour nous de migrer les ressources vers les services et d'avoir un grand contrôleur pour chacun d'entre eux. Voici ce que nous avions avant:Déplacer MockBean dans un objet de configuration séparé
@Component
public class MainResource {
...
@Path("/first")
public FirstResource getFirstResource() {
...
@Path("/second")
public SecondResource getSecondResource() {
@Component
public class FirstResource {
@GET
@Path("/")
public FirstEntity getFirstEntity() {
@Component
public class SecondResource {
@GET
@Path("/")
public SecondEntity getSecondEntity() {
Et voici ce que nous avons maintenant:
@Controller
public class MainController {
@Resource
FirstService firstService;
@Resource
SecondService secondService;
...
@GetMapping(/first)
public FirstEntity getFirst() {
...
@GetMapping(/second)
public SecondEntity getSecond() {
Mais quand il est venu à tester un contrôleur la question suivante surgie: nous voulons diviser les tests par service ainsi dans tous les test, nous devons utiliser @MockBean
pour chaque service (il ne démarre pas le contexte de l'application sinon). Voici donc la question:
@RunWith(SpringRunner.class)
@WebMvcTest(MainController.class)
public class FirstWebMvcTest {
@MockBean
FirstService firstService;
@MockBean
SecondService secondService;
// testing /first call only. secondService is not used
@RunWith(SpringRunner.class)
@WebMvcTest(MainController.class)
public class SecondWebMvcTest {
@MockBean
FirstService firstService;
@MockBean
SecondService secondService;
// testing /second call only. firstService is not used
Nous ne voulons pas reproduire @MockBean
. Comme une solution temporaire, je les ai tous transférés à la classe de base. Mais je n'aime pas étendre la classe de test de base pour obtenir ces définitions @MockBean
, il me semble être une solution sale. Idéalement, je voudrais le déplacer vers une configuration ou autre chose.
Merci pour vos suggestions!
Hm, mais il n'injecte pas de mocks dans les tests. –