gpt4 book ai didi

grails - 你如何在 grails 2.3 中测试服务或 Controller 方法

转载 作者:行者123 更新时间:2023-12-04 14:46:07 25 4
gpt4 key购买 nike

我刚开始使用 grails 2.3,但在运行单元测试时遇到了问题。到目前为止我所做的是我已经跑了

grails create-app new-app
grails create-service NewService
grails test-app

这产生
| Running 1 unit test...
| Completed 0 unit test, 0 failed in 0m 2s
| Tests PASSED - view reports in C:\Git\aspera_web\target\test-reports

到目前为止一切顺利,但如果我编辑方法
void "test something"() {
}

在 NewServiceSpec 类中
void "test something"() {
assert false
}

然后再次运行我再次得到
| Running 1 unit test...
| Completed 0 unit test, 0 failed in 0m 2s
| Tests PASSED - view reports in C:\Git\aspera_web\target\test-reports

然后我查看了 spock 文档并尝试再次编辑我的测试。这次到
void "test something"() {
expect: 1 == 2
}

产生
| Running 1 unit test...
| Running 1 unit test... 1 of 1
| Failure: test something(aspera_web.NewServiceSpec)
| Condition not satisfied:
false
at aspera_web.NewServiceSpec.test something(NewServiceSpec.groovy:19)
| Completed 1 unit test, 1 failed in 0m 2s
| Tests FAILED - view reports in C:\Git\aspera_web\target\test-reports

这看起来很有希望,所以下一步是测试我的 NewService 类中的方法,所以我再次将测试更改为
def service = new NewSevice()
void "test something"() {
expect: service.serviceMethod()
}

当我运行它时,我得到
| Running 1 unit test...
| Running 1 unit test... 1 of 1
| Failure: test something(aspera_web.NewServiceSpec)
| java.lang.NullPointerException
at aspera_web.NewServiceSpec.test something(NewServiceSpec.groovy:21)
| Completed 1 unit test, 1 failed in 0m 2s
| Tests FAILED - view reports in C:\Git\aspera_web\target\test-reports

只是为了更好的衡量,我还直接从 Spock 示例中添加了一个测试
def stack = new Stack()
def "size"() {
expect: stack.size() == 0
}

这就像一个魅力......

所以最后我的问题是:
  • 我如何测试我自己的服务/ Controller 方法(如果我用 create-controller 替换 create-service,我得到完全相同的结果)

  • 编辑

    显然这是 Grails 2.3.0 中的一个错误,请参阅下面的答案。

    最佳答案

    解决方案是进入生成的服务类并删除@Transaction 参数。然后由于某种原因,测试中的服务变量被实例化。

    我已经提交了 JIRA report关于它。

    解决方法

    只需删除注释并添加行

    static transactional = true

    到服务,而不是获得相同的行为。

    关于grails - 你如何在 grails 2.3 中测试服务或 Controller 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18999343/

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