gpt4 book ai didi

testing - 如何模拟 'new' 运算符

转载 作者:行者123 更新时间:2023-11-28 19:44:31 25 4
gpt4 key购买 nike

我正在测试一些使用 java 库的常规代码,我想模拟库调用,因为它们使用网络。所以被测代码看起来像这样:

def verifyInformation(String information) {
def request = new OusideLibraryRequest().compose(information)
new OutsideLibraryClient().verify(request)
}

我尝试使用 MockFor 和 StubFor,但出现如下错误:

No signature of method: com.myproject.OutsideLibraryTests.MockFor() is applicable for argument types: (java.lang.Class) values: [class com.otherCompany.OusideLibraryRequest]  

我正在使用 Grails 2.0.3。

最佳答案

我刚刚发现我们总是可以通过 MetaClass 覆盖构造函数,因为 Grails 2 将在每次测试结束时重置 MetaClass 修改。

这个技巧比 Groovy 的 MockFor 更好。据我所知,Groovy 的 MockFor 不允许我们模拟 JDK 的类,例如 java.io.File。但是在下面的示例中,您不能使用 File file = new File("aaa"),因为实际对象类型是 Map,而不是 File。该示例是 Spock 规范。

def "test mock"() {
setup:
def fileControl = mockFor(File)
File.metaClass.constructor = { String name -> [name: name] }
def file = new File("aaaa")

expect:
file.name == "aaaa"
}

关于testing - 如何模拟 'new' 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10589332/

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