createStaticInteropMock<T extends Object, U extends Object> 函数
- U dartMock, [
- Object? proto = null
给定一个 @staticInterop
类型 T 和一个 Dart 类 U 的实例 dartMock
,该实例实现了 T 的外部扩展成员,创建一个转发模拟。
可选地,你可以通过 proto
提供一个 JS 原型对象,例如 JS 值 Window.prototype
。这允许使用 @Native
类型进行 instanceof 和 is 检查,以通过返回的转发模拟通过。
当外部扩展成员被调用时,它们将转发到 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]);