首页 > 解决方案 > 如何对 ldap 模板搜索方法进行单元测试?

问题描述

我正在编写 ldap 查询以从电子邮件中搜索用户名,方法是这样的

    final ContainerCriteria query = ldapQuery(email);


        var attr = (AttributesMapper<String>) attrs -> attrs
                            .get("uid")
                            .get()
                            .toString()

LdapQueryBuilder
                .query()
                .where("objectclass")
                .is("person")
                .and("mail")
                .is(email);

ldapTemplate.search(query, attr);

我需要对这个方法进行单元测试,但由于 AttributesMapper 和 ContainerCriteria 上没有 equals 方法我

@Test
    public void shouldReturnUsername() {
        final List<String> user = Arrays.asList("shahg");

        final ContainerCriteria containerCriteria = LdapQueryBuilder
                .query()
                .where("objectclass")
                .is("person")
                .and("mail")
                .is("xyz@abc.com");

                var attr = (AttributesMapper<String>) attrs -> attrs
                            .get("uid")
                            .get()
                            .toString()

        when(dapTemplate
                .search(containerCriteria, (AttributesMapper<String>) attrs -> attrs
                        .get("uid")
                        .get()
                        .toString()));

        ldapService.getUsername("xyz@abc.com");

}

即使一切都一样,测试也会失败。我也尝试使用 ArgumentMatcher,但结果相同。

标签: junitmockitospring-ldap

解决方案


推荐阅读