issue in unit testing using mobx

48 Views Asked by At

mobx store page

import '../../locator.dart';
import '../../shared/model/forum/forum.model.dart';
import '../../storage_manager.dart';
part 'social_store.g.dart';

class SocialStore = _SocialStore with _$SocialStore;

abstract class _SocialStore with Store {
  _SocialStore() {}

final SocialProvider _socialProvider = locator.get<SocialProvider>();

@observable
 LoadingStatusEnum postDetailPageState = LoadingStatusEnum.init;

@observable
 Observable<PostModel>? postItemDetails;

@action
  Future<void> getOnePost(
    int? postId,
  ) async {
    postDetailPageState = LoadingStatusEnum.loading;
    dynamic _resp = await _socialProvider.getOnePostDetail(postId);
    if (_resp['success'] != "error") {
      PostModel _postItemDetails = PostModel.fromJson(_resp);
      postItemDetails = Observable(_postItemDetails);
      postDetailPageState = LoadingStatusEnum.success;
    } else {
      postDetailPageState = LoadingStatusEnum.error;
    }
  }
}

provider page

class SocialProvider {
  Future<dynamic> getOnePostDetail(
    int? postId,
  ) async {
    try {
      final String url =
          "posts/$postId?_fields=id,title,featured_image,categories,link,content";
      Response resp = await http!.authService.get(
        url,
      );
      return resp.data;
    } on DioException catch (e) {
      return {'status': 'error', 'message': http!.parseError(e)};
    } catch (e) {
      return {
        'status': 'error',
        'message':
            'Something went wrong , Please Check Your Internet Connection'
      };
    }
  }
}

I'm writing unit test for this getOnePost() function using mobx,

test page

import 'package:flutter_test/flutter_test.dart';
import 'package:kdramalive/locator.dart';
import 'package:kdramalive/shared/model/post/post.model.dart';
import 'package:kdramalive/store/social_store/social_store.dart';
import 'package:mockito/mockito.dart';
import 'package:kdramalive/provider/social.provider.dart';

class MockSocialProvider extends Mock implements SocialProvider {}

void main() {
  group('getOnePost', () {
    test('returns a PostModel when the call is successful', () async {
     
      final mockSocialProvider = MockSocialProvider();
      SocialStore _socialStore = locator.get<SocialStore>();


      //   final postId = 1;
      //   socialStore.getOnePost(postId);
      //   final postModel = PostModel();
      //   when(_socialProvider.getOnePostDetail(postId)).thenAnswer((_) async => {
      //         'success': 'ok',
      //       });
      //   expect(await socialStore.postItemDetails, equals(postModel));
    });
  });
}

But when i call this instance SocialStore _socialStore = locator.get<SocialStore>(); getting error

error getting

Bad state: GetIt: Object/factory with type SocialStore is not registered inside GetIt. (Did you accidentally do GetIt sl=GetIt.instance(); instead of GetIt sl=GetIt.instance; Did you forget to register it?) package:get_it/get_it_impl.dart 12:19 throwIfNot package:get_it/get_it_impl.dart 397:5 _GetItImplementation._findFactoryByNameAndType package:get_it/get_it_impl.dart 425:29 _GetItImplementation.get test\widget_test.dart 60:42 main..

don't know how to call the instance SocialStore _socialStore = locator.get<SocialStore>();

0

There are 0 best solutions below