gpt4 book ai didi

java - 使用 Mockito 在其中调用 new() 测试类

转载 作者:IT老高 更新时间:2023-10-28 20:24:16 25 4
gpt4 key购买 nike

我有一个包含 new() 调用以实例化 LoginContext 对象的旧类:

public class TestedClass {
public LoginContext login(String user, String password) {
LoginContext lc = new LoginContext("login", callbackHandler);
}
}

我想使用 Mockito 来模拟 LoginContext 来测试这个类,因为它要求在实例化之前设置 JAAS 安全性东西,但我不确定如何在不更改 code>login() 方法来外部化 LoginContext

是否可以使用 Mockito 来模拟 LoginContext 类?

最佳答案

对于 future ,我会推荐 Eran Harel's answer (重构将 new 移动到可以模拟的工厂)。但是,如果您不想更改原始源代码,请使用非常方便且独特的功能:sies。来自 documentation :

You can create spies of real objects. When you use the spy then the real methods are called (unless a method was stubbed).

Real spies should be used carefully and occasionally, for example when dealing with legacy code.

在你的情况下,你应该写:

TestedClass tc = spy(new TestedClass());
LoginContext lcMock = mock(LoginContext.class);
when(tc.login(anyString(), anyString())).thenReturn(lcMock);

关于java - 使用 Mockito 在其中调用 new() 测试类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5920153/

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