1
i have tagLib like this:

静的名前空間 = 'j2'

  def brandMessage = { attrs, body ->   
    def brand = ConfigurationHolder.config.j2.brand
    def messageCode = (brand ? brand+".":"") + attrs.code    
    def defaultCode = attrs.default ?: attrs.code
    out << message(code:messageCode,      default:message(code:attrs.code,default:defaultCode))
  }

で使用する:

public static def translate = {code,Object[] args->
      def dflt = (args.size()>0?args[0]:"");
        def taglib = ApplicationHolder.application?.getMainContext()?.getBean("com.j2.taglib.BrandMessageTagLib")
        def translatedValue = taglib?.brandMessage(code:code,default:dflt)?:""

        return translatedValue
      }

使用しているコントローラーで:

flash.message = I18nUtils.translate('admin.groups.delete.success')

アプリの実行中は正常に動作します。しかし、コントローラーのユニット テスト ケースを作成すると、次のようなエラー メッセージがスローされます。

org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'com.j2.taglib.BrandMessageTagLib' is defined

しかし、私はこれを Test クラスで次のように定義しました:

defineBeans {
                myService(BrandMessageTagLib)
            }
            def beanName=applicationContext.getBean("myService")

            log.info("beanName->"+beanName)

            def mockMyTagLib = mockFor(BrandMessageTagLib)
            mockMyTagLib.demand.brandMessage(1) {code, defaultMessage ->
                def defCode = new MarkupBuilder(new StringWriter())
                defCode.applyTemplate('<j2:brandMessage code="admin.groups.delete.success"')
            }
            controller.brandMessageTagLib = mockMyTagLib.createMock()

これでも同じエラーメッセージがスローされます。

誰でもアイデアを持っていると非常に役立ちます。

ありがとうアルナジェンドラ

4

0 に答える 0