0

Grails1.3.7をベースにしたアプリがあります。具体的には、組み込みのtaglibに基づくカスタムtaglibの単体テストを作成する必要があり<g:select />ます。

この以前のSO投稿で解決策を確認しましたが、私の場合、記載されている解決策は機能していません(一部のプロパティは適切にモックアップされていません)。

私が見つけた他の解決策はこれでした。このアプローチを使用して、必要なプロパティをFormTagLib除いて、モックアップされたプロパティのほとんどを取得します。私が得る実際のエラーはです。grailsApplicationselectCannot invoke method getArtefact() on null object

このような場合、どうすれば単体テストを正しく書くことができますか?

編集
これ が私のテストクラス完全なスタックトレースです。g.selectスタックトレースの45行目は、カスタムtaglibからの呼び出しです。私のカスタム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')



}
4

1 に答える 1

0

grailsApplicationデフォルトで嘲笑されることは決してないだろうと私は信じています、それはあまりにも多くの責任を持っています。私は次のようなことをすることによって残酷に愛国的grailsApplicationにモックインしようとしますsetUp()

tagLib.grailsApplication = [getArtefact: { -> return something suitable }]
于 2012-12-04T22:48:58.253 に答える