Тест Gwt junit не инициализирует $wnd.jQuery

inputmask в сочетании с gwt следующим образом:


public class JQueryMask {

    public native static void setMask(Element elem,String mask) /*-{

        $wnd.jQuery(elem).find("input").inputmask(mask);
        $wnd.jQuery(elem).find("input").change(function(e) {

            });
    }-*/;

    public native static void removeMask(Element elem) /*-{
        $wnd.jQuery(elem).find("input").inputmask("remove");

    }-*/;


    public native static void setMaskWithGreadyFalse(Element elem,String mask) /*-{

    $wnd.jQuery(elem).find("input").inputmask({mask:mask,greedy:false});
    $wnd.jQuery(elem).find("input").change(function(e) {

            });

    }-*/;

}



Эти методы вызываются, когда виджет инициализируется и в браузере все работает. Переменная jQuery не инициализируется, это приводит к тому же исключению:


console.log($wnd.jQuery());

также:

console.log($wnd.$());

Который:


com.google.gwt.core.client.JavaScriptException: (null) @assembly.gwtlib.gui.plugins.JQueryMask::removeMask(Lcom/google/gwt/dom/client/Element;)([JavaScript object(77)]): null
    at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:249)
    at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)
    at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:576)
    at com.google.gwt.dev.shell.ModuleSpace.invokeNativeVoid(ModuleSpace.java:304)
    at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeVoid(JavaScriptHost.java:107)
    at assembly.gwtlib.gui.plugins.JQueryMask.removeMask(JQueryMask.java)
    at assembly.gwtlib.gui.widget.input.Input.setMask(Input.java:54)
    at assembly.gwtlib.gui.widget.input.DateInput.(DateInput.java:76)
    ...

person sherif    schedule 18.08.2015    source источник


Ответы (2)


GWTTestCases используют свою собственную хост-страницу HTML (потому что, ну, технически, у вас может даже не быть ее или быть не статической), поэтому, если вам нужен jQuery для ваших тестов, вы должны загрузить его из самих тестов (например, используя ScriptInjector , либо из вашего тестового метода, либо из gwtSetUp())

person Thomas Broyer    schedule 18.08.2015

person    schedule
comment
Это все еще не работает полностью, но я думаю, что это что-то в структуре маски, например: $wnd.jQuery(elem).find(input).inputmask(); и $wnd.jQuery(elem).find(input).inputmask( Удалить); работает, но $wnd.jQuery(elem).find(input).inputmask(9); не о.О - person sherif; 19.08.2015
comment
Мне не удалось заставить его работать. Мой обходной путь: if(!$wnd.jQuery){return;} в нативных методах - person sherif; 19.08.2015