gpt4 book ai didi

unit-testing - 如何模拟 Grails Domain 类的特定方法?

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

我正在尝试测试调用方法 getUrl() 的服务在我的域类上:

服务等级:

PersonService {

//WE WANT TO TEST THIS METHOD.
String getPersonLink(Person person){
person.url
}
}

class Person {

static transient LinkGenerator grailsLinkGenerator

String name
String uniqueId

static transients = ['url']

String getUrl() {
grailsLinkGenerator.createLink(controller:'xyz', action: 'index', id: uniqueId)
}
}

我得到 NullPointerException (它发现 grailsLinkGenerator 为空)当我运行我的测试。

所以,我知道我需要模拟这个 getUrl()我的域类中的方法。

我们如何模拟这个方法调用我的单元测试?

最佳答案

  • 您必须删除 static .您不能 Autowiring 静态。如果你写 LinkGenerator grailsLinkGenerator您必须添加 grailsLinkGenerator到 transient 。否则休眠将尝试保存它。您可以通过简单地编写 def grailsLinkGenerator 来避免这种情况。 .
  • 没有createLink()方法,称为link() .
  • 在单元测试中,bean 不是 Autowiring 的。您必须设置 grailsLinkGenerator自己有这样的事情:
    def p = new Person()
    p.grailsLinkGenerator = Mock(LinkGenerator)

    然后你可以 stub /模拟link() (不确定你想测试什么,所以这只是一个例子):
    p.grailsLinkGenerator.link (_) >> "foo"
  • 关于unit-testing - 如何模拟 Grails Domain 类的特定方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24530522/

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