2012-03-23 6 views
0

簡単な質問:mockitoでのGWTテスト

検証(1)合格。 確認(2)は行いません。どうして?それを修正するには?

テスト

@Test 
    public void test() { 
      System.out.println("test"); 
      EventBus eb = mock(EventBus.class); 
      MyWidget.View v = mock(MyWidget.View.class); 
      GreetingServiceAsync s = mock(GreetingServiceAsync.class); 

      HasClickHandlers button = mock(HasClickHandlers.class); 

      when(v.getButton()).thenReturn(button); 

      new MyWidget(eb, v, s); 

      button.fireEvent(mock(ClickEvent.class)); 

      verify(button).addClickHandler(any(ClickHandler.class)); (1) 
      verify(v).alert(anyString()); (2) 


     } 

ウィジェット

@Inject 
    public MyWidget(EventBus eventBus, View view, GreetingServiceAsync service){ 
     this.view = view; 
     this.service = service; 

     bindView(); 
     bindEventBus(); 

    } 

    private void bindView(){ 

     view.getButton().addClickHandler(new ClickHandler() { 

      @Override 
      public void onClick(ClickEvent event) { 
       view.alert("test"); 
      } 
     }); 

    } 

答えて

0

は、あなたがボタンをからかっています。それはすべての能力を失う。 あなたが次に手動で使用してイベントの機能を発射ArgumentCatptor

ArgumentCaptor<ClickHandler> captor = ArgumentCaptor.forClass(ClickHandler.class); 

をすることによってこの問題を解決することができます:

captor.getValue().onClick(null); 

このボタンによって行われている必要があります偽の呼び出しがします。

クラスには、特定のイベントに対して1つのボタンまたは1つのキャッチャーしかない場合は、ClickHandlerクラスを拡張できるようにすることができます。次に、クラスのonClickを呼び出すことができます。

1

ボタンが出て嘲笑し、fireEventが呼び出されたときに何をすべきか、それを言って何の実装はありませんでしたので。 buttonはそう実際にイベントを発生しないことにfireEventを呼び出し、モックあるので

HasClickHandlers button = mock(HasClickHandlers.class); 
... 
button.fireEvent(mock(ClickEvent.class)); 
3

;:行を参照してください。ビューではonClickは呼び出されません。私が何をしたかである

0

:デビッド・ウォレスが言ったように

public class ClickableElement implements HasClickHandlers{ 

     ClickHandler ch; 
     @Override 
     public void fireEvent(GwtEvent<?> event) { 
      ch.onClick((ClickEvent) event); 
     } 

     @Override 
     public HandlerRegistration addClickHandler(ClickHandler handler) { 
      this.ch = handler; 
      return null;   
     } 

    }; 
関連する問題