创建静态互操作模拟函数
- U dartMock,
- [Object? proto = null]
给定一个 @staticInterop
类型 T 和一个实现 T 的外部扩展成员的 Dart 类 U 的实例 dartMock
,创建一个转发模拟。
可选地,您可以通过 proto
提供一个 JS 原型对象,例如 Window.prototype
的 JS 值。这允许使用返回的转发模拟执行 instanceof
和 is
检查与 @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]);