【问题标题】:How to test provider in view model如何在视图模型中测试提供者
【发布时间】:2021-12-08 11:26:38
【问题描述】:

我有一个视图使用的视图模型,我想为包含提供程序的功能之一编写单元测试。函数是这样的

Future<String> onSubmit(BuildContext context) async {

PersonProvider personProvider = Provider.of<PersonProvider>(context,listen: false);

String userId = personProvider.user.id;
isLoading = true;
return 'hello';

});}

有没有我可以测试一下,或者我必须重构代码

【问题讨论】:

    标签: flutter flutter-test flutter-provider


    【解决方案1】:

    您应该重构您的代码,如果该函数在 ViewModel 中,问题是它不应该对表示层一无所知或尽可能少。所以它不应该依赖BuildContext,而是直接将所需的依赖项传递给函数:

    Future<String> onSubmit(PersonProvider personProvider) async {
    
    
    String userId = personProvider.user.id;
    isLoading = true;
    return 'hello';
    
    });}
    

    或者将其注入到 ViewModel 构造函数中,这样您就可以将 viewModel 与 UI 以及 PersonProvider 分离,现在可以将其作为模拟传递以进行测试。

    如果您所说的 viewmodel 真的只是一个演示者,您可以进行小部件测试并为小部件树提供一个 Mock PersonProvider 实现。

    【讨论】:

      猜你喜欢
      • 2021-01-19
      • 2013-09-20
      • 2023-04-01
      • 1970-01-01
      • 2010-11-16
      • 1970-01-01
      • 2020-06-11
      • 2019-12-31
      • 1970-01-01
      相关资源
      最近更新 更多