gpt4 book ai didi

java - 如何模拟在方法内部创建的对象?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:13:31 24 4
gpt4 key购买 nike

考虑一下

public class UserManager {
private final CrudService crudService;

@Inject
public UserManager(@Nonnull final CrudService crudService) {
this.crudService = crudService;
}

@Nonnull
public List<UserPresentation> getUsersByState(@Nonnull final String state) {
return UserPresentation.getUserPresentations(new UserQueries(crudService).getUserByState(state));
}

}

我要模拟

new UserQueries(crudService)  

这样我就可以模拟它的行为

有什么想法吗?

最佳答案

PowerMock你可以模拟构造函数。参见 example

我现在没有 IDE,但会是这样的:

  UserQueries userQueries = PowerMockito.mock(UserQueries.class);
PowerMockito.whenNew(UserQueries.class).withArguments(Mockito.any(CrudService.class)).thenReturn(userQueries);

您需要使用 PowerMockRunner 运行您的测试(将这些注释添加到您的测试类中):

@RunWith(PowerMockRunner.class)
@PrepareForTest(UserQueries .class)

如果你不能使用 PowerMock,你必须注入(inject)一个工厂,正如@Briggo 回答的那样。

希望对你有帮助

关于java - 如何模拟在方法内部创建的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26320127/

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