Попытка получить UIBinder, чтобы дать мне промежуток, а не div

Я не вижу здесь проблемы. Со следующим кодом, использующим API Mockito, мне удалось сделать именно это:

public class CodeWithPrivateMethod {

    public void meaningfulPublicApi() {
        if (doTheGamble("Whatever", 1 << 3)) {
            throw new RuntimeException("boom");
        }
    }

    private boolean doTheGamble(String whatever, int binary) {
        Random random = new Random(System.nanoTime());
        boolean gamble = random.nextBoolean();
        return gamble;
    }
}

И вот тест JUnit:

import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.anyString;
import static org.powermock.api.mockito.PowerMockito.when;
import static org.powermock.api.support.membermodification.MemberMatcher.method;

@RunWith(PowerMockRunner.class)
@PrepareForTest(CodeWithPrivateMethod.class)
public class CodeWithPrivateMethodTest {

    @Test(expected = RuntimeException.class)
    public void when_gambling_is_true_then_always_explode() throws Exception {
        CodeWithPrivateMethod spy = PowerMockito.spy(new CodeWithPrivateMethod());

        when(spy, method(CodeWithPrivateMethod.class, "doTheGamble", String.class, int.class))
                .withArguments(anyString(), anyInt())
                .thenReturn(true);

        spy.meaningfulPublicApi();
    }
}
16
задан Bob 26 March 2014 в 18:12
поделиться

3 ответа

Попробуйте следующее:

<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
         xmlns:g='urn:import:com.google.gwt.user.client.ui'>
    <g:HTMLPanel tag="span">
        <!-- your stuff -->
    </g:HTMLPanel>
</ui:UiBinder>
24
ответ дан 30 November 2019 в 21:02
поделиться

Что касается ответа Роберта выше (извините, я не могу понять, как это прямо прокомментировать).

Это не сработает из коробки, поскольку виджеты не могут быть размещены внутри обычного HTML ( компилятор выдаст вам «ошибка: найден виджет в html контексте»). Но есть простой обходной путь:

<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
             xmlns:g='urn:import:com.google.gwt.user.client.ui'>
  <g:HTMLPanel>
    <span>
      <!-- Your content with widgets goes here -->
    </span>
  </g:HTMLPanel>
</ui:UiBinder>

Еще одна полезная вещь, о которой стоит упомянуть, - это виджеты InlineHTML и InlineLabel, способные хранить произвольный HTML или простой текст соответственно в

0
ответ дан 30 November 2019 в 21:02
поделиться

Вы можете продолжать использовать

, но просто добавьте display: inline в его CSS, что приведет к сделать так, чтобы он отображался как .

Правка: исправлено место в конце, где я сказал «div», но имел в виду «span».

5
ответ дан 30 November 2019 в 21:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: