Dart Mockito 当第一个、第二个、...n 次调用时,返回不同的值

TSR*_*TSR 7 mockito dart flutter

在 Java Mockito 中,您可以为每个调用模拟不同的返回值,如下所示:

when(myMock.doTheCall())
   .thenReturn("You failed")
   .thenReturn("Success");
Run Code Online (Sandbox Code Playgroud)

或者像这样:

when(myMock.doTheCall()).thenReturn("Success", "you failed");
Run Code Online (Sandbox Code Playgroud)

来源:模拟第一次调用失败,第二次调用成功

我想知道如何在 Dart Mockito 中实现同样的目标。我找不到这方面的文档

Jho*_*tan 7

您可以在此处阅读mockito文档: https: //pub.dev/documentation/mockito/latest/ 该解决方案是使用您想要的响应的有序数组。对于你的例子:

final responses = ["You failed", "Success"];
when(myMock.doTheCall()).thenAnswer((_)=>responses.removeAt(0))
Run Code Online (Sandbox Code Playgroud)

这也适用于异步响应(将异步词添加到方法 thenAnswer(...))。


TSR*_*TSR 0

我在2020年问过这个,三年后,好像已经实现了

when(calculator.sum(any, any)).thenReturnInOrder([2, 4]);
Run Code Online (Sandbox Code Playgroud)

https://github.com/dart-lang/mockito/pull/597