【问题标题】:Flutter Mockito. Failing to mock颤振 Mockito。模拟失败
【发布时间】:2021-08-07 06:30:54
【问题描述】:

我正在尝试在我的项目中使用 mockito 来测试 API。这是organization_test.dart 下的一个小sn-p 代码。我只会提供直到错误行,因为它是唯一的问题。

class MockOrganizationRemoteDataSource extends Mock implements OrganizationRemoteDataSource {}


void main(){
 late final MockOrganizationRemoteDataSource mockOrganizationDataSource;
 late final IOrganizationRepository iOrganizationRepository;
 final tOrgName = "someOrgName";

 setUp((){
  mockOrganizationRemoteDataSource = MockOrganizationRemoteDataSource();
  iOrganizationRepository = IOrganizationRepository(mockOrganizationRemoteDataSource);
 });

 test("Should fetch the organization",() async {
  when(mockOrganizationRemoteDataSource.getOrganization(tOrgName)) // Getting ERROR on this line
   .thenAnswer(
      (_) async => Response(
       requestOption: RequestOption(
        path: <Some url in here ????????>
        data: <Some json response here ????????>
        responseType: ResponseType.json)
      ),
   );
 
   final result = await iOrganizationRepository.fetchOrganization(tOrgName);   
   
   ...
   ... // some more code here


 });
}


然后我得到错误是type 'Null' is not a subtype of type 'Future&lt;Response&lt;dynamic&gt;&gt;'

我期待如果我使用 mock,我可以从 mockedDataSource 调用 getOrganization 方法并假装回答响应。然而,在调试时,我总是最终引用了 Un-mocked 类,即 OrganizationRemoteDataSource 导致 null 值。

顺便说一句,我正在使用启用了 null-safety 和 Dio 的颤振。

【问题讨论】:

  • 您是否按照无效安全说明并致电@GenerateMocks
  • 显然,我没有也不知道。现在会检查。谢谢!我会再次询问我是否仍然遇到同样的错误。
  • 谢谢@jamesdlin!它使用@GenerateMocks 工作。

标签: flutter unit-testing mockito dio


【解决方案1】:

感谢 jamesdlin 的评论,我得以解决此问题:

  • 在 void main() 中添加 @GenerateMocks 注释

@GenerateMocks([OrganizationRemoveDataSource])
void main(){
...
}

  • 删除了 MockOrganizationRemoteDataSource 类并使用 build_runner 允许 Mockito 生成带注释的 GenerateMocks。

更新:

由于在零安全飞镖中使用 Mockito 的复杂性。我遇到了一个很棒的库,它可以作为替代方案,名为Mocktail。你可以在这里看到图书馆https://pub.dev/packages/mocktail

【讨论】:

    猜你喜欢
    • 2023-03-07
    • 2018-03-05
    • 1970-01-01
    • 2021-12-25
    • 2021-06-06
    • 2018-08-09
    • 1970-01-01
    相关资源
    最近更新 更多