gpt4 book ai didi

unit-testing - Class.metaclass.static说不能在null上获得静态

转载 作者:行者123 更新时间:2023-12-02 14:50:13 25 4
gpt4 key购买 nike

在编写单元测试用例时,有一点我需要做一些元编程来测试如下方法。

 void "test method:resolver"(){
setup:"mocked resolver"
ContextHolder.getMetaClass().static.getBean = {
Resolver resolver = Mock(Resolver)
resolver(_) >> {HttpServletRequest request1->
return 1;
}
}

and:"mocked getAppName"
CoreUtil.metaClass.static.getAppName = {
return "$apiName"
}

when:
UserGroupRole userGroupRole = service.resolve(username)

then:
userGroupRole != null

where:
apiName || username
"core-blog" || "test11"
}

以下是我运行测试用例所经历的场景:
  • 单独运行测试用例时,它可以完美运行。
  • 在将测试用例作为整个规范运行时,即运行Specification类本身,它可以完美地运行
  • 但是当通过
  • 整体运行测试用例时

    grails test-app :unit



    无法说出 Class.metaclass.static say can not get static on null
    请帮忙!

    最佳答案

    如果要在测试中进行元类更改,则需要在每个测试结束时的清理步骤中清理这些元类更改。否则,您将面临测试污染的风险。

    setup
    metaclass work
    when
    then
    cleanup:
    revoke the metaclass changes here
    where

    关于unit-testing - Class.metaclass.static说不能在null上获得静态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34317219/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com