如何在此模拟对象中设置值

Pra*_*pta 0 java mockito

如何在下面的模拟对象中设置值.我知道如何获取值但是如何使用mock设置值?

    public class AUTest
    {

    Set<String> permissionIds = new HashSet<String>();

    @Mock 
    UserService userservice;

    @Mock
    PermissionService permissionservice;

    Set<String> emailid = new HashSet<String>();


    @Test
    public void getSuperUserPermissions()
    {
        List<Permissions> allPermissions = permissionservice.getAllPermissions();
        PermissionService permission = Mockito.mock(PermissionService.class);
        Mockito.when(permission.getPermissionById(5L)).thenReturn(pemission);
        Assert.assertNotNull(allPermissions);
    }

}
Run Code Online (Sandbox Code Playgroud)

lop*_*san 6

模拟对象仅用于获取值.您可以设置返回的值,就像jou使用的那样:

Mockito.when(permission.getPermissionById(5L)).thenReturn(pemission);
Run Code Online (Sandbox Code Playgroud)

现在,当你打电话给permission.getPermissionById(5L)你时,你会得到permission.

也许你在谈论捕获传递给方法的参数.你可以使用ArgumentCaptor来做到这一点.

示例代码:

ArgumentCaptor<Person> argument = ArgumentCaptor.forClass(Person.class);
verify(mock).doSomething(argument.capture());
assertEquals("John", argument.getValue().getName());
Run Code Online (Sandbox Code Playgroud)