创建静态互操作模拟函数

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

给定一个 @staticInterop 类型 T 和一个实现 T 的外部扩展成员的 Dart 类 U 的实例 dartMock,创建一个转发模拟。

可选地,您可以通过 proto 提供一个 JS 原型对象,例如 Window.prototype 的 JS 值。这允许使用返回的转发模拟执行 instanceofis 检查与 @Native 类型。

当调用外部扩展成员时,它们将转发到 dartMock 中的相应实现成员。如果 U 没有实现 T 所需的外部扩展成员,或者如果 U 没有正确地覆盖它们,则将视作编译时错误。

例如

@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());

实现

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