Unit testing 基于内置Grails标记库对Grails自定义标记库进行单元测试

Unit testing 基于内置Grails标记库对Grails自定义标记库进行单元测试,unit-testing,grails,Unit Testing,Grails,我有一个基于Grails1.3.7的应用程序。具体地说,我需要为基于内置taglib的定制taglib编写一个单元测试 我检查了这方面的解决方案,但所述解决方案在我的情况下不起作用,一些属性没有被适当地模拟 我找到的另一个解决方案是。使用这种方法,我得到了FormTagLib的大多数属性,除了select需要的grailsApplication属性。我得到的实际错误是无法在null对象上调用方法getArtefact 在这种情况下,如何正确编写单元测试 编辑 这是我的和我的。stacktrace

我有一个基于Grails1.3.7的应用程序。具体地说,我需要为基于内置taglib的定制taglib编写一个单元测试

我检查了这方面的解决方案,但所述解决方案在我的情况下不起作用,一些属性没有被适当地模拟

我找到的另一个解决方案是。使用这种方法,我得到了FormTagLib的大多数属性,除了select需要的grailsApplication属性。我得到的实际错误是无法在null对象上调用方法getArtefact

在这种情况下,如何正确编写单元测试

编辑 这是我的和我的。stacktrace上的第45行是从我的自定义标记库调用g.select。我的自定义标记库类似于

def clientSpecificQueues = {attrs->
    def queueList = taskService.getClientSpecificQueues(session.clientName)
    def queueLabel = "Some String"


    if (queueList.size() > 0){
        out << queueLabel
    else
        out << g.select(name:'queueId', from: queueList, optionKey: 'id', optionValue: 'name')



}
我相信grailsApplication在默认情况下永远不会被嘲笑,它有太多的责任。我会尝试在安装程序中通过如下操作残酷地模仿grailsApplication

tagLib.grailsApplication = [getArtefact: { -> return something suitable }]

你能发布你的测试类和完整的stacktrace吗?我已经用stacktrace和测试类的链接更新了我的问题。看一看。