簡體   English   中英

如何為此小部件編寫小部件測試

[英]How to write widget test for this widget

我想編寫小部件測試的我的小部件

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

當用戶點擊水龍頭時調用的函數

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

我使用 Mockito 創建了這個視圖模型的 Mock

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

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

現在在測試中,當我嘗試對此函數進行存根時,它不會調用thenAnswer也不會調用Callback本身。 任何實現方式我只想在實際屏幕中調用此函數時切換我的變量。

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

這是您可以測試此功能的方法。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM