第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Ldap 單元測(cè)試模擬 NamingEnumeration

Ldap 單元測(cè)試模擬 NamingEnumeration

喵喔喔 2023-04-26 14:48:29
我在嘗試模擬 NamingEnumeration 時(shí)遇到問(wèn)題。此外,我無(wú)法覆蓋到 lambda 表達(dá)式內(nèi)部。我也無(wú)法獲得 while 循環(huán)內(nèi)的覆蓋范圍。當(dāng)我通過(guò)這些方法運(yùn)行單元測(cè)試時(shí),覆蓋率僅通過(guò) 顯示ldapTemplate.search,它會(huì)跳過(guò) lambda 表達(dá)式內(nèi)部的內(nèi)容,并通過(guò)返回列表。我嘗試將 Mock 注釋添加到 NamingEnumeration 和 Attribute 對(duì)象。while 循環(huán)似乎認(rèn)為 NamingEnumeration 是空的,因?yàn)闆](méi)有覆蓋。以下結(jié)果導(dǎo)致“測(cè)試類(lèi)中檢測(cè)到不必要的存根”:doReturn(true,false).when(enumeration).hasMore();和doReturn(attr).when(enumeration).next();這是我的 Ldap 方法public List<MyObject> ldapQueryList(final String ldapSearch, final String key) {        List<MyObject> list = new ArrayList<>();        ldapTemplate.search("ou=User Accounts", "cn=" + ldapSearch), (Attributes attrs) -> {                NamingEnumeration<?> enumeration = attrs.get(key).getAll();                list.addAll(addToList(enumeration));                return attrs;        });        return list;    }    public List<MyObject> addToList(NamingEnumeration<?> enumeration) throws NamingException {        List<MyObject> list = new ArrayList<>();        while (enumeration.hasMoreElements()) {            final MyObject myObj = new MyObject();            final String str = (String)enumeration.nextElement();            myObj.setMyString(str);            list.add(myObj);            }        enumeration.close();        return list;    }這是單元測(cè)試@RunWith(MockitoJUnitRunner.class)public class LdapQueryDaoTest {    @Mock    private LdapTemplate ldapTemplate;    @InjectMocks    private LdapDao ldapDao;    @Mock     private NamingEnumeration<?> enumeration;    @Mock     private Attribute attr;    @Test    public void ldapQueryList() throws DataAcesExcp, NamingException {        List<String> searchResult = Collections.singletonList("search result");        when(ldapTemplate.search( Mockito.anyString(), Mockito.anyString(), ArgumentMatchers.<AttributesMapper<String>> any())).thenReturn(searchResult);        List<EmployeeVo> responseEntity = ldapDao.ldapQueryList(Const.EMPLOYEE_ID, "myLdapObj");        Assert.assertNotNull(responseEntity);    }
查看完整描述

1 回答

?
慕桂英4014372

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超13個(gè)贊

我在嘗試模擬 NamingEnumeration 時(shí)遇到問(wèn)題。

考慮改用真正的枚舉?;旧?,您應(yīng)該只模擬自己創(chuàng)建的過(guò)于復(fù)雜的對(duì)象(列表、迭代器和枚舉是不復(fù)雜對(duì)象的示例)。

此外,我無(wú)法覆蓋到 lambda 表達(dá)式內(nèi)部。

它按預(yù)期工作。您模擬(讀取替換)了搜索方法,因此沒(méi)有對(duì) lambda 表達(dá)式的求值,因?yàn)樗呀?jīng)具有定義的結(jié)果。

while 循環(huán)似乎認(rèn)為 NamingEnumeration 是空的,因?yàn)闆](méi)有覆蓋。

以下結(jié)果導(dǎo)致“在測(cè)試類(lèi)中檢測(cè)到不必要的存根”:doReturn(true,false).when(enumeration).hasMore(); 和 doReturn(attr).when(enumeration).next();

hasMore 和 next 是您的拼寫(xiě)錯(cuò)誤,因?yàn)槟氖纠姓{(diào)用的方法是 hasMoreElements 和 nextElement。

@Test

public void addToList() throws NamingException {

   doReturn(true,false).when(enumeration).hasMoreElements();

   doReturn(attr).when(enumeration).nextElement();

   Assert.assertNotNull(ldapQueryDaoImpl.addToList(enumeration));

}

您可以單獨(dú)驗(yàn)證 lambda 表達(dá)式,示例如下:


class MyMatcher implements AttributesMapper<Attributes> {


    List<MyObject> list = new ArrayList<>();


    public Attributes mapFromAttributes(Attributes attrs) {


        NamingEnumeration<?> enumeration = attrs.get(key).getAll();

        list.addAll(addToList(enumeration));

        return attrs;

    }

}

public void test() {


  NamingEnumeration<? extends Attribute> enumeration = ...


  Attribute attributeMock = mock(Attribute.class);

  when(attributeMock.getAll()).thenReturn(enumeration);


  Attributes attributesMock = mock(Attributes.class);

  when(attributesMock.get(any(String.class)).thenReturn(attributeMock);


  MyMatcher matcher = new MyMatcher();

  matcher.mapFromAttributes(attr);


  // assert ... matcher.list

}


查看完整回答
反對(duì) 回復(fù) 2023-04-26
  • 1 回答
  • 0 關(guān)注
  • 138 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)