2017-06-15 2 views
-1

Java-Klasse, die MAPSTRUCT verwendet, haben wir statische Variable INSTANCE innerhalb der Schnittstelle und diese Schnittstellenimplementierung wird zur Laufzeit erstellt.So, wie mock Klasse, die Map Struct in Java verwendet?Wie man Klasse vortäuscht, die Map Struct in Java benutzt?

@Mapper 1 
    public interface CarMapper { 

     CarMapper INSTANCE = Mappers.getMapper(CarMapper.class); 3 

     @Mapping(source = "numberOfSeats", target = "seatCount") 
     CarDto carToCarDto(Car car); 2 
    } 


    public class A 
    { 
     public CarDto getCardto() 
     { 
      CarDto carDto = CarMapper.INSTANCE.carToCarDto(car); 
      return carDto; 
     } 

    } 

Wie erstellt man Mock für Klasse A?

+0

Bitte geben Sie etwas Code zu betrachten, Ihre Beschreibung ist nicht annähernd ausreichend. Auch "MAPSTRUCT" ist nichts, was ich weiß; ein weiterer Grund, etwas Code einzubauen. –

+0

Wenn Sie die statische Variable 'INSTANCE' verwenden, bedeutet das, dass Sie das Standard-' componentModel' verwenden. Warum solltest du solch eine Klasse verspotten? Sie müssen keine statische Variable in der Schnittstelle verwenden, Sie können sie auch an einer anderen Stelle (dem Ort, an dem Sie sie benötigen) erstellen. – Filip

+0

Können Sie den Code ansehen? –

Antwort

0

Wenn Sie Klasse A vortäuschen möchten, dann können Sie einfach Mockito.mock(A.class) tun.

+0

Das weiß ich, Wenn CarMapper.INSTANCE, spottet, wirft es ClassNotFoundException, da wir keine CarMapperImpl haben, wurde es zur Laufzeit generiert. –

+0

Warum müssen Sie CarMapper.INSTANCE spotten? Die Verspottungsklasse A bedeutet, dass "getCardto()" vollständig überschrieben wird, sodass Sie sich nicht um das INSTANCE-Objekt kümmern müssen. – Ray

+0

Erneut wird der 'CarMapperImpl' zur Kompilierzeit generiert, nicht zur Laufzeit. Der Kommentar von Ray ist gültig. Wie interferiert das Objekt "INSTANCE" mit der Verspottung von "A"? – Filip

Verwandte Themen