2013-08-16 39 views
1

我有一些JSNI代码,我想单元测试,所以我决定使用GWT测试-utils的修补程式,但由于某种原因它不工作...gwt-test-utils:JSO Patcher不工作?

我按照和双重检查我的代码和我无法让它工作..我有一种感觉,这是非常愚蠢的,我忘记了,任何人都可以发现问题?

测试:

@GwtModule("com.my.app.gwt.client.view.MyView") 
public class MyViewTest extends GwtTest { 

private MyView mView; 

@Before 
public void setUp() { 
    mView = new MyView(Mockito.mock(MyView.Binder.class)); 
} 

@Test 
public void shouldGetMyConfigAndParse() { 
    MyConfig oMyConfig = mView.getMyConfig(); 
    System.out.println("########## oMyConfig=" + oMyConfig); 
    assertTrue(true); 
} 

} 

查看:

public class MyView extends ViewImpl implements MyPresenter.MyView { 

interface Binder extends UiBinder<Widget, MyView> { 
} 

@UiField SimplePanel mMainPanel; 

@Inject 
public MyView(Binder pBinder) { 
    initWidget(pBinder.createAndBindUi(this)); 
} 

@Override 
public void setInSlot(Object pSlot, IsWidget pContent) { 
    if (pSlot == MyPresenter.SLOT_MAIN) mMainPanel.setWidget(pContent); 
    else super.setInSlot(pSlot, pContent); 
} 

@Override 
public MyConfig getMyConfig() { 
    JSOMyConfig oJSOConfig = getJSOMyConfig(); 
    MyConfig oConfig = new MyConfig(); 
    oConfig.setAutoPlay(oJSOConfig.isAutoPlay()); 
    oConfig.setWidth(oJSOConfig.getWidth()); 
    oConfig.setHeight(oJSOConfig.getHeight()); 
    return oConfig; 
} 

private native JSOMyConfig getJSOMyConfig()/*-{ 
    return $wnd.myConfig; 
}-*/; 

} 

JSO

public class JSOMyConfig extends JavaScriptObject { 

protected JSOMyConfig() { } 

public native boolean isAutoPlay() /*-{ 
    return this.autoPlay; 
}-*/; 

public native String getWidth() /*-{ 
    return this.width; 
}-*/; 

public native String getHeight() /*-{ 
    return this.height; 
}-*/; 

} 

JSOPatcher

@PatchClass(JSOMyConfig.class) 
public class JSOMyConfigPatcher { 

@PatchMethod 
public static boolean isAutoPlay(JSOMyConfig JSOMyConfig) { 
    return false; 
} 

@PatchMethod 
public static String getWidth(JSOMyConfig JSOMyConfig) { 
    return "500"; 
} 

@PatchMethod 
public static String getHeight(JSOMyConfig JSOMyConfig) { 
    return "400"; 
} 

} 

META-INF/gwt-test-utils.properties:

com.my.app.gwt.client.config.model.jso = scan-package 
com.my.app.gwt.client.view.MyView = gwt-module 

我错过了什么?

感谢您的时间:)

回答

2

您修补JSOMyConfig JSNI方法,但显然不是MyView.getJSOMyConfig()之一。我对吗 ?

+0

真棒,似乎已经奏效!但现在我得到了:“GwtTestPatchException:覆盖类型'com.my.app.gwt.client.config.model.jso.JSOMyConfig'还没有找到,你忘了继承一些GWT模块。”任何想法?我确实有: 。但似乎没有工作.. –