gpt4 book ai didi

unit-testing - 在域类上调用 .save() 失败,单元测试中没有方法 .save() 的签名

转载 作者:行者123 更新时间:2023-12-01 09:06:29 27 4
gpt4 key购买 nike

我在 NetBeans 中使用 Grails 1.3.2。我有一个非常简单的单元测试失败并出现此错误:

No signature of method: com.maxrecall.maxrequire.domain.Release.save() is applicable for argument types: (java.util.LinkedHashMap) values: [[flush:true]] Possible solutions: wait(), any(), wait(long), isCase(java.lang.Object), use([Ljava.lang.Object;), sleep(long)

相关代码为:

Release rel = new Release()
...
rel.save(flush:true)

在 BootStrap.groovy 中也可以使用相同的代码。我尝试了 .save() 的各种变体(带参数和不带参数的.Save。

最佳答案

这是一个单元测试,所以没有 Spring、Hibernate 等。你必须模拟你想要的行为。

如果您正在测试持久性,则需要将测试转换为集成测试,因为使用单元测试测试持久性只是测试模拟框架。集成测试至少使用内存数据库,尽管您可以轻松地将其切换为 MySQL/Oracle/etc 的测试实例。

如果您正在测试域类的 Controller 或其他用户,并且只想让它们工作以便您可以专注于测试当前类,请使用 mockDomain 和 Grails 单元测试基类中可用的其他模拟方法。

这在文档中有详细描述 - 见 http://grails.org/doc/latest/guide/9.%20Testing.html

关于unit-testing - 在域类上调用 .save() 失败,单元测试中没有方法 .save() 的签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6769842/

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