繁体   English   中英

如何模拟调用集合方法而该集合没有设置方法的方法?

[英]how to mock method which invoke collection method and this collection has not setter?

我有以下课程:

public class UsersHolder {
    private Set<User> users = new HashSet<>();

    public void addUser(User user) {
        users.add(user);
    }
    ...
}

用户尚未设置方法

有没有办法测试addUser方法?

有办法

@RunWith(MockitoJUnitRunner.class)
public class UsersHolderTest {
    @InjectMocks private UsersHolder usersHolder;
    @Mock private Set<User> users;

    @Test
    public void addUser_shouldAddUser() {
        // given
        User user = new User();
        // when
        usersHolder.addUser(user);
        // then
        Mockito.verify(usersHolder).add(user);
    }
}

话虽如此,我不会测试这种简单的逻辑。 此外,在这种情况下,集合成为应该从外部来的类依赖关系(通常将集合视为类内部受管理的数据持有者)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM