gpt4 book ai didi

unit-testing - 如何在 Grails 中使用静态成员模拟抽象类?

转载 作者:行者123 更新时间:2023-12-02 15:39:55 25 4
gpt4 key购买 nike

我需要模拟一个 GrailsControllerClass 接口(interface)。实例应该定义一个静态变量。问题是 MockFor 和 StubFor 没有给你添加静态成员的选项。
因此,我编写了扩展 GrailsControllerClass 的抽象类

abstract class MyController implements GrailsControllerClass {
static myDefinition = [name:"item1", action:"action1"]
}
现在,MockFor 和 StubFor 引发错误:groovy.lang.MissingMethodException: No signature of method: groovy.util.ProxyGenerator.instantiateAggregateFromBaseClass() is applicable for argument types: (java.lang.Class, null) values... 这似乎是报告的错误:
https://issues.apache.org/jira/browse/GROOVY-3720
唉,grails 带有 groovy 1.6。
我不想让 MyController 成为一个带有空方法声明的巨大的具体类。有什么选择吗?

最佳答案

尝试

class Tests extends GrailsUnitTestCase {

SUT systemUnderTest = new SUT()

testMocksStaticMethod(){

ClaasToBeMocked mockedClass = new ClassToBeMocked()

mockedClass.staticMethod = [staticMethod: {return "TestValue"}] as ClassToBeMocked

assertEquals("something", systemUnderTest.methodThatCallsStaticMethod())
}

关于unit-testing - 如何在 Grails 中使用静态成员模拟抽象类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1688951/

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