【问题标题】:Error while executing Integration Test with JSON output使用 JSON 输出执行集成测试时出错
【发布时间】:2011-04-30 13:41:36
【问题描述】:

以下是我在控制器中的操作。我正在尝试通过集成测试来测试此操作。这也需要我模拟会话对象。我已经开始进行集成测试,但没有成功。

def listData= {

    def playerId=session["playerId”]    

    tuneInstanceList = tuneService.calculateId(playerId)


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

    render listResult as JSON;

}

下面是我的服务类中的 CalculateId 方法:

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() 
//} 

}

以下是我编写的集成测试。这是不正确的,我不确定我应该在这里放什么。输入?

    public void testQuery () {

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

    myController.tuneService = tuneService

    myController.listData()

    String actualJSON = myController.response.contentAsString

    assertNotNull(actualJSON)




}

运行测试时出现以下错误。

无法在空对象上获取属性“请求”

java.lang.NullPointerException:无法在空对象上获取属性“请求”

想法??

【问题讨论】:

    标签: json testing integration


    【解决方案1】:

    为这个场景制定了测试用例。下面是代码。谢谢!

    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)
    
    }
    

    【讨论】:

      猜你喜欢
      • 2021-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多