2010-10-26 17 views
1

Voici mon action dans le contrôleur. J'essaie de tester cette action via un test d'intégration. Cela nécessiterait que je moque aussi les objets de session. J'ai commencé avec le test d'intégration, mais je n'ai pas de chance avec ça.Erreur lors de l'exécution du test d'intégration avec la sortie JSON

def listData= { 

    def playerId=session["playerId”]  

    tuneInstanceList = tuneService.calculateId(playerId) 


    def listResult = [total: tuneInstanceList.size(), items: tuneInstanceList] 

    render listResult as JSON; 

} 

Ci-dessous est la méthode CalculateId dans ma classe de service:

List<Tune> calculateId(String playerId) {    

    try{ 
    //read the sql file 
     String playerSql = grailsApplication.mainContext.getResource('classpath:'  +   Constants.PLAYER_FILE).inputStream.text 

def sql = new groovy.sql.Sql(dataSource)     

def params = [playerId:playerId] 
def tuneInstanceList = new ArrayList<Tune>() 

def results = sql.rows(playerSql, params) 

tuneInstanceList = results.each { 
    def tune = new Tune() 
    tune.setPlayerId it.player_id  
    tuneInstanceList.add tune 
} 
return tuneInstanceList 

}catch (Exception ex) { 
    log.error ex.message, ex 
    throw ex 
} 
//finally { 
    //sql.close() 
//} 

}

est Ci-dessous le test d'intégration que je l'ai écrit. Ce n'est pas correct et je ne suis pas sûr de ce que je devrais mettre ici. Contributions?

public void testQuery() { 

    def myController = new TuneController() 
    myController.request.contentType = "text/json" 

    myController.tuneService = tuneService 

    myController.listData() 

    String actualJSON = myController.response.contentAsString 

    assertNotNull(actualJSON) 




} 

Je reçois l'erreur ci-dessous lorsque j'exécute le test.

Impossible d'obtenir la propriété 'demande' sur l'objet null

java.lang.NullPointerException: Impossible d'obtenir la propriété 'demande' sur l'objet null

Pensées ??

Répondre

1

A élaboré le scénario de test pour ce scénario. Voici le code. Merci!

public void testJSONQuery() { 
    def tuneController = new TuneController() 
    tuneController.request.contentType = "text/csv" 
    tuneController.tuneService = tuneService 
    tuneController.session["playerId"]='AF67H'  
    tuneController.listData() 
    String tuneJSON = tuneController.response.contentAsString 

    log.info ('Number of Records on execution of query is' + tuneJSON.substring(9,10)) 


//Checks if the record count is greater than zero 
    assertTrue (new Integer(tuneJSON.substring(9,10)).intValue() > 0) 

}