IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Services Web Java Discussion :

test unitaire avec RESTEASY où la réponse Response ne comporte pas l'entity attendue


Sujet :

Services Web Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    729
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 729
    Par défaut test unitaire avec RESTEASY où la réponse Response ne comporte pas l'entity attendue
    Bonjour,

    j'utilise des tests unitaires avec RESTEASY

    Voici ma resource
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    Mon interface
    @Path("cf")
    public interface CapacityFileService
    {
     
        @POST
        @Path("createCapacityFile")
        @Produces(MediaType.APPLICATION_JSON)
        public Response createCapacityFile(@Form PartsGroupingSearchDto partsGroupingSearchDto);
    ........................................................
    Mon implementation
        public Response createCapacityFile(PartsGroupingSearchDto partsGroupingSearchDto)
        {
            partsGroupingSearchDto.setUserSession(sessionManagerService.getUserSession(req));
            List<Object[]> allPartsDetail = capacityFileBusiness.createCapacityFile(partsGroupingSearchDto);
            return Response.ok(allPartsDetail).build();
        }
    et voice mon test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
     
    package com.renault.dcr.impl.capacityfile;
     
    import java.util.ArrayList;
    import java.util.List;
     
    import javax.servlet.http.HttpServletRequest;
    import javax.ws.rs.client.Entity;
    import javax.ws.rs.core.Form;
    import javax.ws.rs.core.MediaType;
    import javax.ws.rs.core.Response;
     
    import org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder;
    import org.jboss.resteasy.plugins.server.tjws.TJWSEmbeddedJaxrsServer;
    import org.junit.AfterClass;
    import org.junit.Assert;
    import org.junit.Before;
    import org.junit.BeforeClass;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.mockito.InjectMocks;
    import org.mockito.Matchers;
    import org.mockito.Mock;
    import org.mockito.Mockito;
    import org.mockito.runners.MockitoJUnitRunner;
     
    import com.dcp.data.dto.PartsGroupingSearchDto;
    import com.dcp.data.dto.common.UserSession;
    import com.dcp.util.common.DcrConstant;
    import com.renault.dcr.business.capacityfile.CapacityFileBusiness;
    import com.renault.dcr.common.service.session.SessionManagerService;
    import com.renault.dcr.utils.InMemoryRestServer;
     
    @RunWith(MockitoJUnitRunner.class)
    public class CapacityFileServiceImplTest {
     
    	@InjectMocks
        public static CapacityFileServiceImpl sut = new CapacityFileServiceImpl();
        //public static InMemoryRestServer server;
    	public static TJWSEmbeddedJaxrsServer server;
     
     
    	@Mock
    	private SessionManagerService sessionManagerService;
     
    	@Mock
    	private CapacityFileBusiness capacityFileBusiness;
     
     
    	@Mock
    	private HttpServletRequest req;
     
    	List<Object[]> allPartsDetail;
     
    	UserSession userSession = null;
     
    	PartsGroupingSearchDto partsGroupingSearchDto;
     
        @BeforeClass
        public static void beforeClass() throws Exception {
     
        	server = new TJWSEmbeddedJaxrsServer();
        	server.setPort(1234);
        	server.getDeployment().getResources().add(sut);
        	server.start();
        }
     
        @AfterClass
        public static void afterClass() throws Exception {
        	server.stop();
        }
     
    	@Before
    	public void setUp() throws Exception {
        	sut.setSessionManagerService(sessionManagerService);
        	sut.setCapacityFileBusiness(capacityFileBusiness);
    		partsGroupingSearchDto = new PartsGroupingSearchDto();
    		partsGroupingSearchDto.setCfNumber("4807");
    		userSession = new UserSession();
     
    		allPartsDetail = new ArrayList<Object[]>();
    		Object[] objectArray = new Object[2];
    		objectArray[0] = "partNumber1";
    		objectArray[1] = "partDescription1";
    		allPartsDetail.add( objectArray);
    	}
     
     
     
    	@Test
    	public void createCapacityFileTest() {
     
     
    		Mockito.when(sessionManagerService.getUserSession(req)).thenReturn(userSession);
    		Mockito.when(capacityFileBusiness.createCapacityFile((PartsGroupingSearchDto)Matchers.anyObject())).thenReturn(allPartsDetail);
    		Entity<PartsGroupingSearchDto>  test = Entity.json(partsGroupingSearchDto);
    		Form form = new Form();
    		form.param("cfNumber", "4807");  // Entity.json(partsGroupingSearchDto)
    		Response response = new ResteasyClientBuilder().build().target("http://localhost:1234/cf/createCapacityFile").request(MediaType.APPLICATION_JSON).post(Entity.form(form));
    		Assert.assertEquals(200, response.getStatus());
     
     
     
    	}
     
    }
    Le problem que j'ai est que quand je lance mon test, ma resource est bient appellee avec l'entité que je lui passe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    .post(Entity.form(form));
    L'appel passe bien dans l'implémentation de ma classe et renvoie l'objet attendu mais quand je lis ma réponse dans mon test, l'objet Response n'est pas celui attendee

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Response response = new ResteasyClientBuilder().build().target("http://localhost:1234/cf/createCapacityFile").request(MediaType.APPLICATION_JSON).post(Entity.form(form));
    // response doesn't contain the expected entity inside
    Merci d'avance pour votre aide

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    729
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 729
    Par défaut
    en inspectant la réponse du coté classe de test,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Response response = new ResteasyClientBuilder().build().target("http://localhost:1234/cf/createCapacityFile").request(MediaType.APPLICATION_JSON).post(Entity.form(form));
    j'obtiens une réponse de type AppacheHttpClient4Engine et non de type javax.ws.rs.core.Response. C'est peut être là le probleme. Qu'en pensez vous ?

  3. #3
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par flamant Voir le message
    L'appel passe bien dans l'implémentation de ma classe et renvoie l'objet attendu mais quand je lis ma réponse dans mon test, l'objet Response n'est pas celui attendee
    Tu as quoi, tu attends quoi, il se passe quoi au niveau de ton code.

    Citation Envoyé par flamant Voir le message
    en inspectant la réponse du coté classe de test,


    j'obtiens une réponse de type AppacheHttpClient4Engine et non de type javax.ws.rs.core.Response. C'est peut être là le probleme. Qu'en pensez vous ?
    J'en pense que tu ne regarde pas ce qu'il faut, il est impossible que post() te retourne un ApacheHttpClient4Engine

Discussions similaires

  1. Test unitaire avec DUnit
    Par stef_chand dans le forum Outils
    Réponses: 1
    Dernier message: 07/09/2007, 15h40
  2. Test unitaire avec C# et nunit
    Par jeromechezgdf dans le forum C#
    Réponses: 6
    Dernier message: 16/07/2007, 11h51
  3. Tests unitaires avec vbUnit sur des contrôles utilisateurs
    Par Patrick Mortas dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 07/09/2006, 18h06
  4. test unitaire avec python
    Par Abla23 dans le forum Zope
    Réponses: 4
    Dernier message: 30/06/2006, 13h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo