如何在Mockito Dart版本中捕获参数。

4

我想要捕获传递给函数的参数,并在其中一个参数的属性等于特定值时进行某些断言。

不幸的是,由于传递了对象,因此我不能像官方文档中描述的那样快速进行断言。

cat.eatFood("Fish");
expect(verify(cat.eatFood(captureAny)).captured.single, ["Fish"]);

我想要实现以下伪代码所示的功能:
cat.eatFood(fridge);
expect(verify(cat.eatFood(captureAny)).captured.single, fridge.milk == "Milk");

或者我只是想将参数 fridge 存储到其他地方。


expect(verify(cat.eatFood(captureAny)).captured.single.milk, "Milk"); 期望(expect)猫吃食物(cat.eatFood)捕获任何(captureAny)的结果是牛奶(milk),如果不是则报错。 - jamesdlin
我收到了一个错误 TestFailure(无匹配调用。所有调用:...)。 - Ensei Tankado
我也想将它写入变量中。 var captured = verify(cat.eatFood(captureAny)).captured.first; - Ensei Tankado
它对我有效,就像var captured = verify(cat.eatFood(captureAny)).captured.first;一样。请提供一个可重现的示例和确切的错误消息。 - jamesdlin
1
我已经解决了这个问题。你是正确的。感谢你的帮助。这是可工作的代码: var verification = verify(mockedSrv.send(captureAny)); expect(verification.captured[0].name, expectedName); expect(verification.captured[0].isFast, false); - Ensei Tankado
2个回答

1

0
这对我有用:
选项1
final verification = verify(mockedSrv.send(captureAny));
expect(verification.captured[0].milk, "Milk");

选项2

expect(verify(mockedSrv.send(captureAny)).captured.single.milk, "Milk");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接