简体   繁体   English

如何为此小部件编写小部件测试

[英]How to write widget test for this widget

My Widget of which i want to write widget test我想编写小部件测试的我的小部件

InkWell(
      key: const Key(kDraftTileKey),
      onTap: () {
        context.read<CreatorHubTapViewModel>().startPublishingFlowAgain(startPublishingFlowAgainPressed: startPublishingFlowAgainPressed);
      },
      child:...
    );

Fucntion which called when user click on a tap当用户点击水龙头时调用的函数

 void startPublishingFlowAgainPressed() {
    widget.viewModel.saveNFT(nft: widget.nft);
    Navigator.of(context).pushNamed(RouteUtil.kRouteHome);
  }

I create a Mock of this viewmodel using Mockito我使用 Mockito 创建了这个视图模型的 Mock

class CreatorHubTapViewModel extends ChangeNotifier {
  void onViewOnPylons({required VoidCallback onViewOnPylonsPressed}) {
    onViewOnPylonsPressed.call();
  }

  void startPublishingFlowAgain({required VoidCallback startPublishingFlowAgainPressed}) {
    startPublishingFlowAgainPressed.call();
  }
}

Now in test when i try to make a stub on this function it is not calling thenAnswer also not calling Callback itself.现在在测试中,当我尝试对此函数进行存根时,它不会调用thenAnswer也不会调用Callback本身。 Any way to achieve i just want to toggle my variable when this function calls in actual screen.任何实现方式我只想在实际屏幕中调用此函数时切换我的变量。

  when(viewModel.startPublishingFlowAgain(startPublishingFlowAgainPressed: () {
    clicked = true;
  })).thenAnswer((realInvocation) {});

This is how you can test this function.这是您可以测试此功能的方法。

 when(viewModel.startPublishingFlowAgain(startPublishingFlowAgainPressed: anyNamed("startPublishingFlowAgainPressed"))).thenAnswer((realInvocation) {
        clicked = true;
      });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM