我试图用groovy为一个用Java编写的类编写一个测试用例。Java类(名称:helper)中有一个方法,在该方法中获取HttpClient对象并对其调用executeMethod。我试图在groovy测试用例中模拟这个HttpClient.executeMethod(),但不能正确地模拟它。
public class Helper{
public static message(final String serviceUrl){
----------some code--------
HttpClient httpclient = new HttpClient();
HttpMethod httpmethod = new HttpMethod();
// the below is the line that iam trying to mock
String code = httpClient.executeMethod(method);
}
}
void testSendMessage(){
def serviceUrl = properties.getProperty("ITEM").toString()
// mocking to return null
def mockJobServiceFactory = new MockFor(HttpClient)
mockJobServiceFactory.demand.executeMethod{ HttpMethod str ->
return null
}
mockJobServiceFactory.use {
def responseXml = helper.message(serviceUrl)
}
}
任何关于它为什么不正确嘲笑的想法。提前致谢
它不起作用是因为编译后的Java类在构造HttpClient实例时不通过Groovy的元对象协议(MOP),所以没有实例化模拟对象。
由于HttpClient实例是线程安全的,我会考虑将它作为依赖项注入到类中,这样测试就可以简单地注入模拟。
我用Mockito进行了Java测试: Kotlin.TypeCastException:null不能强制转换为非null类型java.util.HashMap 如何正确模拟属性?
我有两个Go测试用例,如下所示,测试一个名为的gRPC函数。 应该在它选择的数据库行具有Field1=="A"时成功,否则返回错误。 我正在用Data dog提供的go sqlmock包模拟数据库。 当我单独运行这两个测试用例时,它们都通过了。 但是当我一起运行它们时,失败,因为它认为Field1==“Z”。显然,正在干扰。为什么? 似乎在案例中执行的模拟在到达时仍然有效,而我在案例中执行的模拟被
本节介绍与Java 9相关的各种模拟测试。 您可以在本地计算机上下载这些示例模拟测试,并在方便时离线解决。 每个模拟测试都提供一个模拟测试密钥,让您自己验证最终得分和评分。 Java 9 Mock Test I 问题1 - Java 9的主要目标是 A - 使JDK和Java Standard Edition平台模块化,因为它可以很好地降低到小型计算设备。 B - 提高JDK和Java实现的整体安
本节介绍与JAVA XML Framework相关的各种模拟测试。 您可以在本地计算机上下载这些示例模拟测试,并在方便时离线解决。 每个模拟测试都提供一个模拟测试密钥,让您自己验证最终得分和评分。 JAVA XML Mock Test I 问题1 - XML代表什么? A - 额外的标记语言 B - 可扩展标记语言 C - Extensible Marked Literal D - 额外标记语言
简介 在 Laravel 应用程序测试中,你可能希望「模拟」应用程序的某些功能的行为,从而避免该部分在测试中真正执行。例如:在控制器执行过程中会触发事件(Event),从而避免该事件在测试控制器时真正执行。这允许你在仅测试控制器 HTTP 响应的情况时,而不必担心触发事件。当然,你也可以在单独的测试中测试该事件逻辑。 Laravel 针对事件、任务和 Facades 的模拟,提供了开箱即用的辅助函
#使用Mocks测试 在现实世界的应用程序中,我们的组件很可能具有外部依赖性。当为组件编写单元测试时,如果我们可以模拟这些外部依赖性,以使我们的测试仅依赖于被测试组件的行为,这将是理想的。 vue-loader提供了一个特性,它允许你使用inject-loader向*.vue组件注入任意依赖项。一般的想法是,不是直接导入组件模块,我们使用inject-loader为该模块创建一个“模块工厂”函数。