Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GwtMockito:有没有办法测试Window.open()?_Java_Gwt_Mockito_Gwtmockito - Fatal编程技术网

Java GwtMockito:有没有办法测试Window.open()?

Java GwtMockito:有没有办法测试Window.open()?,java,gwt,mockito,gwtmockito,Java,Gwt,Mockito,Gwtmockito,我想测试我对Window.open(String)的调用是否具有正确的URL(下载文件) 除了像这样使用部分模拟,还有更好的方法吗 MySUT sut = Mockito.spy(new MySUT()); String expectedURL = "http://www.example.com"; doNothing().when(sut).openWindow(expectedURL); sut.doSomethingThatOpensURL(); verify(sut).openWi

我想测试我对
Window.open(String)
的调用是否具有正确的URL(下载文件)

除了像这样使用部分模拟,还有更好的方法吗

MySUT sut = Mockito.spy(new MySUT());
String expectedURL = "http://www.example.com";

doNothing().when(sut).openWindow(expectedURL);

sut.doSomethingThatOpensURL();

verify(sut).openWindow(expectedURL);
其中
openWindow(String)
MySUT
中尽可能简单:

void openWindow(String url) {
    Window.open(url);
}

GwtMockito是否为您提供了一些测试执行本机javascript的方法的工具,比如
Window.open(String)

我想没有能力使用GwtMockito验证它。 但我相信使用PowerMock和EasyMock是可能的。 这种模拟框架为测试静态方法和第三方类提供了极大的灵活性

我刚刚创建了一个简单的示例,说明如何测试Window.open()。 例如,在我的测试用例中,我只是检查Window.alert()

@RunWith(PowerMockRunner.class)
@PrepareForTest(Window.class)
@SuppressStaticInitializationFor("com.google.gwt.user.client.Window")
public class SimpleTester {

  /** Simple class for test. */
  private class TestClass {
    public void open(String url) {
      Window.alert(url);
    }
  }

  @Test
  public void test() {
    PowerMock.mockStatic(Window.class);

    TestClass obj = new TestClass();
    Window.alert("test");
    EasyMock.expectLastCall();
    PowerMock.replay(Window.class);

    obj.open("test");
    PowerMock.verify(Window.class);
  }
}