小编Ash*_*ati的帖子

使用 DI (injectable-getIt) 在 flutter 中进行测试的正确方法?

从 lib(dev) 代码中初始化的 getIt 获取实例是否可以,或者我应该使用其他方式或其他 DI 设置进行测试?

请参考下面的代码:

 void main() {
      TravellerProfileViewModel travellerProfileViewModel;
      UserService mockUserService;
      setUpAll(() {
        // CoreInjector is initialised in lib, and gives the getIt instance
        CoreInjector.initialize();
        //register mockUserService in place of actual user service in the CoreInjector.getIt
        mockUserService = registerAndGetMock<UserService>(MockUserService());
        // CoreInjector gives TravellerProfileViewModel, injected with UserService
        travellerProfileViewModel =
            CoreInjector.getIt.get<TravellerProfileViewModel>();
      });
}

T registerAndGetMock<T>(T mockAble) {
  _removeRegistrationIfExists<T>();
  CoreInjector.getIt.registerFactory<T>(() => mockAble);
  return mockAble;
}
Run Code Online (Sandbox Code Playgroud)

核心注入器代码

class CoreInjector {
  static GetIt _getIt;

  static GetIt get getIt => _getIt;

  static …
Run Code Online (Sandbox Code Playgroud)

unit-testing dependency-injection injectable flutter flutter-test

8
推荐指数
0
解决办法
1712
查看次数