我有一个基于 Grails 1.3.7 的应用程序。具体来说,我需要为基于内置 taglib 的自定义 taglib 编写单元测试<g:select />
。
我在之前的 SO 帖子中查看了解决方案,但所述解决方案在我的情况下不起作用(某些属性没有被正确模拟)。
我发现的另一个解决方案是this。使用这种方法,我得到了模拟的大部分属性,FormTagLib
除了需要的grailsApplication
属性select
。我得到的实际错误是Cannot invoke method getArtefact() on null object
.
在这种情况下如何正确编写单元测试?
编辑
这是我的测试类和完整的堆栈跟踪。stacktrace 上的第 45 行是g.select
从我的自定义 taglib 调用。我的自定义标签库类似于
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')
}