Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 模拟类时发出警告_Dart_Dart Unittest - Fatal编程技术网

Dart 模拟类时发出警告

Dart 模拟类时发出警告,dart,dart-unittest,Dart,Dart Unittest,我正在读这篇文章——关于用飞镖模仿的,我已经让这个简单的例子起作用了 import'包:unittest/mock.dart'; 福班{ int x; bar()=>“bar”; baz()=>“baz”; } 类MockFoo扩展Mock实现Foo{} void main(){ var mockFoo=新mockFoo(); mockFoo.when(callsTo('bar'))。 然后返回(“条”); 打印(mockFoo.bar()); } 代码正确地打印了“条”,因此模拟显然有效。但

我正在读这篇文章——关于用飞镖模仿的,我已经让这个简单的例子起作用了

import'包:unittest/mock.dart';
福班{
int x;
bar()=>“bar”;
baz()=>“baz”;
}
类MockFoo扩展Mock实现Foo{}
void main(){
var mockFoo=新mockFoo();
mockFoo.when(callsTo('bar'))。
然后返回(“条”);
打印(mockFoo.bar());
}
代码正确地打印了“条”,因此模拟显然有效。但Dart编辑器会生成一个警告/错误:

Missing inherited members: 'Foo.bar', 'Foo.baz' and 'Foo.x'

尽管有此警告/错误,代码似乎仍能正常工作,但我希望消除此错误。我该怎么做呢?

因为MockFoo实现了Foo,所以您需要定义
x
bar()
baz()
,即使您只对
bar()
的行为感兴趣。对于您的示例,这与执行以下操作一样简单:

类MockFoo扩展Mock实现Foo{
int x;
bar(){}
baz(){}
}

对于包含一长串成员的更为实质性的类,这种模式可能会变得相当乏味,但我不知道有什么更好的方法来消除编辑器警告。希望这有帮助。

如果您实现了
noSuchMethod()

类MockFoo扩展Mock实现Foo{
noSuchMethod(调用调用){
返回super.noSuchMethod(调用);
}
}

执行此操作时,您可能还需要应用
@proxy
注释。由于Mock类定义了noSuchMethod,因此只需在类中添加
@proxy
注释就可以防止出现警告,但在最新的开发版本中似乎不是这样。感谢@MattB在Dart邮件列表中开始讨论该主题,Brian Wilkerson在其中提供了扩展的解释