我们可以在不使用 Mocking 的情况下对 Flutter 中的 Repository 类进行单元测试吗?

问题描述 投票:0回答:1
class Repository{
  final NetworkManager networkManager;
  const Repository({required this.networkManager});

  TodoModel? getTodo(){
    if (networkManager.isNetworkAvailable()){
      return const TodoModel(id: 1, todo: "todo", completed: true, userId: 123);
    }
    else{
      return null;
    }
  }
}

class NetworkManager{
  bool isNetworkAvailable(){
    return true;
  }
}
  1. 测试 Repository 类中的 getTodo() 方法的正确方法应该是什么?

  2. 我需要在这里嘲笑什么?

  3. 我们可以在不模拟任何东西或不使用模拟库的情况下对实际的 API 调用和响应进行单元测试吗?

flutter
1个回答
0
投票

单元测试是测试代码片段的行为。通常这将包括编程逻辑、给定某些输入的预期路径。

对于您的情况,我假设

NetworkManager
不是由您实现的,您发布的代码只是一个示例。因此,要测试此存储库,您需要模拟
NetworkManager
(这是一个单独的类),为
isNetworkAvailable()
设置预期返回值,并将模拟传递到
Repository
的构造函数中。

如果您需要测试 NetworkManager 的行为,您可以仅为该类创建一个单独的测试文件。

对于第三个问题,您需要集成测试,这是一种测试多个部分协同工作的方法,理想情况下不需要模拟任何东西。正如 Flutter 文档所说:

集成测试验证整个应用程序的行为。此测试也可以称为端到端测试或 GUI 测试。

您可以在Flutter 文档 - 集成测试概念上阅读更多相关信息。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.