JMockit:显示关于缺少调用 1 错误的模糊错误消息

JMockit: show obscure error message about missing invocation 1 to error

我必须测试 class UserAdmin,它依赖于数据库 class。我模拟了数据库 class 来测试 UserAdmin class。数据库 class 有一个方法 isAdmin() 决定用户是否是管理员。 UserAdmin class 有一个名为 removeUser() 的方法,我收到此错误。如果用户是管理员,removeUser() 方法不允许删除用户 以下是我看到此错误的代码。

@Test
    //testing remove user method of UserAdmin - remove Admin
        public void testremoveUserAdmin() throws SQLException{
            new Expectations() {{
                
                dBConnection.isAdmin("admin");
                times=1;
                result = true;
                
            }};             
         assertEquals(false,userAdmin.removeUser("admin"));

当我输入上面的 assertEquals() 时,它给出了一个缺少的调用错误,但是当我在断言中用 true 替换 false 时,它​​说预期是 true 但它是 false。我不确定为什么会出现此错误。类似方法 isAdmin() 的类似代码 运行 工作正常。请帮助

在 isAdmin 方法之前应该调用另一个方法。在isAdmin方法之前调用解决问题

适合我:

public class UserAdminTest {
    static class DBConnection { boolean isAdmin(String userName) { return false; } }

    static class UserAdmin {
        boolean removeUser(String userName) {
            DBConnection dbConnection = new DBConnection();

            if (!dbConnection.isAdmin(userName)) {
                // remove user
                return true;
            }

            return false;
        }
    }

    @Tested UserAdmin userAdmin;
    @Mocked DBConnection dBConnection;

    @Test
    public void doesNotRemoveUserWhenAdmin() throws Exception {
        new Expectations() {{ dBConnection.isAdmin("admin"); result = true; }};

        boolean removedIt = userAdmin.removeUser("admin");

        assertFalse(removedIt);
    }
}