亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

java easymock:調用模擬時可以調用另一個方法嗎?

java easymock:調用模擬時可以調用另一個方法嗎?

慕田峪4524236 2023-07-13 17:51:09
我想在調用特定的模擬方法時執行一些代碼。mock = EasyMock.createMock(ConListener.class);// Record n Replaymock.Connected();mock.DataSent();EasyMock.replay(mock);sock = createCon(addr, mock)// I want the send to be called only after the mock's Connected() is invoked.sock.send("data");有沒有什么方法可以在調用模擬時執行調用操作?mock.Connected().Invoke () //something like this? 到目前為止我所擁有的是mock = EasyMock.createMock(ConListener.class);// Record n Replaymock.Connected();mock.DataSent();EasyMock.replay(mock);CompletableFuture<Void> connected = new CompletableFuture<Void>();sock = createCon(addr, new ConListener() {   public void Connected() {      mock.Connected();      connected.complete(null);   }   public void DataSent() { mock.DataSent(); }});connected.get()sock.send("data");想檢查是否有更好、更干凈的方法。
查看完整描述

1 回答

?
繁星coding

TA貢獻1797條經驗 獲得超4個贊

我發現addDelegate可以解決我的問題..不是那么清晰和直觀,但比我以前的方法稍好一些。


interface ConListener {

   void Connected();

   void DataSent(int size);

}


// Having it as a class, so that I can only add stub codes,

// for a particular method and leave the rest.


class TestListener implements ConListener {

   void Connected() {Assert.fail("")}

   void DataSent(int size) {Assert.fail("")}

}



@Test

public void SomeTest() {

   CompletableFuture<Void> connected = new CompletableFuture<Void>();

   mock = EasyMock.createMock(ConListener.class);


   // Record

   mock.Connected();

   EasyMock.expectLastCall().andDelegateTo(new TestListener() {

      public void Connected() {

        connected.complete(null);

      }

   });

  EasyMock.expectLastCall().times(1); // This cannot come before adding delegates. Why?

  EasyMock.replay(mock);


  // Test

  sock = createCon(addr, mock/*using actual mock*/);

  connected.get(timeout, unit);

  sock.send(blahblah);  


}



查看完整回答
反對 回復 2023-07-13
  • 1 回答
  • 0 關注
  • 136 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號