在以某种方式阅读了Dart 单元测试后,我仍然无法理解如何将它与Future
s 一起使用。
例如:
void main()
{
group('database group',(){
setUp( () {
// Setup
});
tearDown((){
// TearDown
});
test('open connection to local database', (){
DatabaseBase database = null;
expect(database = new MongoDatabase("127.0.0.8", "simplechat-db"), isNotNull);
database.AddMessage(null).then(
(e) {
expectAsync1(e)
{
// All ok
}
},
onError: (err)
{
expectAsync1(bb)
{
fail('error !');
}
}
);
});
// Add more tests here
}); }
因此,在测试中,我创建了一个基本抽象类的实例,DatabaseBase
其中包含一些实际MongoDb类的参数,并立即检查它是否已创建。然后我只运行一些非常简单的函数:AddMessage
. 这个函数定义为:
Future AddMessage(String message);
并返回completer.future
。
如果传递message
为空,则该函数将失败完成者:.completeError('Message can not be null');
在实际测试中,我想测试是否Future
成功完成或有错误。所以以上是我尝试了解如何测试Future
返回 - 问题是这个测试没有失败 :(
您能否在答案中写一个小代码示例如何测试返回的函数Future
?在测试中我的意思是-有时我想测试返回(成功时)值,如果成功值不正确,则测试失败,而另一个测试应该失败,那么函数将失败Future
并进入onError:
阻塞。