2014-10-07 105 views
0

這是我的Java代碼。我想用mockito創建更新元素的測試。你能幫我解決嗎?列中的GWT Mockito測試

public EditURLComposite(
    CommandFacade commandFacade, 
    String testID, 
    EventBus eventBus) { 
    super(false, true); 
    this.eventBus = eventBus; 
    this.commandFacade = commandFacade; 

    uiBinder.createAndBindUi(this); 
    eventBinder.bindEventHandlers(this, eventBus); 

    if (getElement() != null) { 
    getElement().setId(testID); 
    url.getElement().setId(testID + "_url"); 
    addButton.getElement().setId("resetButton"); 
    } 
    dataProvider.addDataDisplay(table); 

    // Description 
    TextColumn<String> urlColumn = new TextColumn<String>() { 
    @Override 
    public String getValue(
     String search) { 
     return search; 
    } 
    }; 

    Column<String, String> deleteColumn = new Column<String, String>(new CellButton(messages.delete())) { 
    @Override 
    public String getValue(
     final String url) { 
     return "Delete"; 
    } 
    }; 

    deleteColumn.setFieldUpdater(new FieldUpdater<String, String>() { 
    @Override 
    public void update(
     final int index, 
     String url, 
     String value) { 

     boolean confirm = Window.confirm("Do you want to delete the URL '" + url + "' ?"); 

     if (confirm == true) { 
     EditURLComposite.this.commandFacade.performCommand(
      new DeleteIntegrationURLServerCommand(user.getUsername(), url), 
      DeleteIntegrationURLClientCommand.getType(), 
      deleteURLEventHandler); 
     } 
    } 
    }); 

    ResizableTextHeader.addColumn(table, urlColumn, "URL"); 
    ResizableTextHeader.addColumn(table, deleteColumn, "Delete"); 
    table.setColumnWidth(urlColumn, "150px"); 
    table.setWidth("200px"); 
} 

回答

0

我發現了這個問題的解決方案。有新的代碼。

deleteColumn.setFieldUpdater(new FieldUpdater<String, String>() { 
     @Override 
     public void update(
      final int index, 
      String url, 
      String value) { 
     boolean confirm = Window.confirm("Do you want to delete the URL '" + url + "' ?"); 
     updateDeleteColumn(url, confirm); 
     } 
    } 


    void updateDeleteColumn(
     String url, 
     Boolean confirm) { 

    if (confirm == true) { 
     EditURLComposite.this.commandFacade.performCommand(
      new DeleteIntegrationURLServerCommand(user.getUsername(), url), 
      DeleteIntegrationURLClientCommand.getType(), 
      deleteURLEventHandler); 
    } 
    } 

最後測試:

@SuppressWarnings({"unchecked", "static-access"}) 
    @Test 
    public void testUpdateDeleteColumn() { 
    // Setup`enter code here` 
    String url = "http://blahblah.com"; 
    UserRPC user = mockupUser(); 
    composite.user = user; 

    // Test 
    composite.updateDeleteColumn(url, true); 

    // Checks 
    Mockito.verify(commandFacade).performCommand(
     Mockito.any(DeleteIntegrationURLServerCommand.class), 
     Mockito.any(Type.class), 
     Mockito.any(DeleteIntegrationURLEventHandler.class)); 

    }