我有一个方法,我使用Java 8 lambda表达式。在为这个方法编写单元测试时,我需要为该表达式编写存根。我们怎么写这个?
<Component Id="FooBar.ini" Guid="GUID" KeyPath="yes" Permanent="yes">
<IniFile Id="FooBar.ini" Directory="FOOBARDIR" Name="FooBar.ini"
Action="addLine" Section="Foo" Key="Bar" Value="1" />
</Component>
我尝试使用here作为 -
的解决方案public List<User> methodA(String userId) {
List<User> users = new ArrayList<>();
userRepository.findAll().forEach(users::add);
List<User> usersFilterByUserId = users.stream().filter(u -> u.getUserid().equalsIgnoreCase(userId)).collect(Collectors.toList());
some other stuff ....
}
答案 0 :(得分:1)
实际上,你在单元测试中模仿了一切
测试变得复杂并失去其价值。
在methodA
中,你应该模仿的一件事是依赖:
userRepository.findAll().
通过模拟对此方法的调用,您将使用lambda正文中的模拟数据,因为它使用findAll()
的结果。
List<User> usersByMock = new ArrayList<>();
usersByMock.add(...);
usersByMock.add(...);
usersByMock.add(...);
...
when(userRepository.findAll()).thenReturn(usersByMock);