createStaticInteropMock<T extends Object, U extends Object> function

T createStaticInteropMock<T extends Object, U extends Object>(
  1. U dartMock, [
  2. Object? proto = null
])

Given a @staticInterop type T and an instance dartMock of a Dart class U that implements the external extension members of T, creates a forwarding mock.

Optionally, you may provide a JS prototype object e.g. the JS value Window.prototype using proto. This allows instanceof and is checks with @Native types to pass with the returned forwarding mock.

When external extension members are called, they will forward to the corresponding implementing member in dartMock. If U does not implement the needed external extension members of T, or if U does not properly override them, it will be considered a compile-time error.

For example:

@JS()
@staticInterop
class JSClass {}

extension JSClassExtension on JSClass {
  external String stringify(int param);
}

@JSExport()
class DartClass {
  String stringify(num param) => param.toString();
}

...

JSClass mock = createStaticInteropMock<JSClass, DartClass>(DartClass());

Implementation

external T createStaticInteropMock<T extends Object, U extends Object>(
  U dartMock, [
  Object? proto = null,
]);