Hi,
I've a simple JavaScript:
var ns = {
Person: function() {
this.sayHello = function() {
return 'Hi';
};
}
}
And I used it to test JsInterop annotation `@JsType` in my GWT test. I
injected JS code to
GWTTestCase and tried to retrieve the definition via `@JsType`. However, it
doesn't
work, it seems that GWT cannot find the method (see Travis CI [1]):
> [INFO] [ERROR] function
@io.mincongh.client.interop.GwtTestJsInterop$Person::sayHello() NOT FOUND,
thisObj: com.google.gwt.dev.shell.JavaObject@43182ce3, methodName:
@io.mincongh.client.interop.GwtTestJsInterop$Person::sayHello()
> [INFO] Tests run: 2, Failures: 0, Errors: 1, Skipped: 0, Time elapsed:
11.342 sec <<< FAILURE!
Actually, my code is pretty simple:
public class GwtTestJsInterop extends GWTTestCase {
@Override
public void gwtSetUp() {
String js = "var ns = { Person: function() { this.sayHello = function()
{ return 'Hi'; }; } }";
ScriptInjector.fromString(js).inject();
}
@Override
public String getModuleName() {
return R.JUNIT_MODULE;
}
public void testJsni() {
assertEquals("Hi", sayHello());
}
private native String sayHello() /*-{
var p = new ns.Person();
return p.sayHello();
}-*/;
public void testJsType() {
Person p = new Person();
String words = p.sayHello();
assertEquals("Hi", words);
}
@JsType(namespace = "ns", isNative = true)
private static class Person {
public native String sayHello();
}
}
Note: The 2nd test method, `testJsni()`, runs successfully, so the JS
should be
injected correctly. I also have the flag `generateJsInteropExports` enabled
in the
Maven GWT plugin in the POM [2]. So what am I missing?
I'm using GWT 2.8.2 and Maven GWT plugin 2.8.2. Any help will be
appreciated!
Thank you,
Mincong HUANG
[1]: https://travis-ci.org/mincong-h/learning-gwt/builds/351967694#L754
[2]:
https://github.com/mincong-h/learning-gwt/blob/ccb8fee02fcae78b1a5db62d5722cd29ace53286/pom.xml#L106
--
You received this message because you are subscribed to the Google Groups "GWT
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.