简体   繁体   English

Flutter 带有延迟初始化变量的 Bloc 测试错误?

[英]Flutter Bloc test error with late initialize variable?

After i'm running test with bloc test, i got issue late error, if i change late with nullsafety their also will be return error, so what alternative to solve?在我使用 bloc 测试运行测试后,我遇到了延迟错误,如果我用 nullsafety 更改延迟,它们也将返回错误,那么有什么替代方法可以解决? when i try without bloc it's run as well nothing return error.当我尝试不使用 bloc 时,它也会运行并且没有任何返回错误。

@GenerateMocks([SearchMovies, SearchTvSeriess])
void main() {
  late SearchMovieBloc searchMovieBloc;
  late SearchTvSeriesBloc searchTvSeriesBloc;
  late MockSearchMovies mockSearchMovies;
  late MockSearchTvSeriess mockSearchTvSeriess;

  setUp(() {
    searchTvSeriesBloc = SearchTvSeriesBloc(mockSearchTvSeriess);
    mockSearchMovies = MockSearchMovies();
    searchMovieBloc = SearchMovieBloc(mockSearchMovies);
    mockSearchTvSeriess = MockSearchTvSeriess();
  });

  final tTvSeriesModel = TvSeries(
      originalName: "2 Good 2 Be True",
      posterPath: "/2Wf5ySCPcnp8lRhbSD7jt0YLz5A.jpg",
      id: 135647,
      overview:
          "Car mechanic Eloy makes a terrible first impression on Ali, who works for a real estate magnate. But both of them are hiding their true personas.",
      popularity: 943.32,
      genreIds: [35, 18],
      backdropPath: "/sIRK4NYe1OK2hOJAg4xxuxzceKk.jpg",
      voteAverage: 7.5,
      voteCount: 102);
  final tTvSeriesList = <TvSeries>[tTvSeriesModel];
  final tQuery = 'spiderman';

  group('Search Movies', () {
    test('Initial state should be empty', () {
      expect(searchMovieBloc.state, SearchEmpty(''));
    });

    blocTest<SearchMovieBloc, SearchState>(
      'Should emit [SearchLoading, SearchHasData] when data is gotten successfully',
      build: () {
        when(mockSearchMovies.execute(tQuery))
            .thenAnswer((_) async => Right(testMovieList));
        return searchMovieBloc;
      },
      act: (bloc) => bloc.add(OnQueryChanged(tQuery)),
      wait: const Duration(milliseconds: 500),
      expect: () => [
        SearchLoading(),
        SearchHasData(testMovieList),
      ],
      verify: (bloc) {
        verify(mockSearchMovies.execute(tQuery));
      },
    );

issue's pic问题的图片

I think the problem that you are initializing bloc in setup before its dependancies.我认为您在依赖项之前在设置中初始化 bloc 的问题。 The order matters here.顺序在这里很重要。 Maybe you should do it like this:也许你应该这样做:

setUp(() {
   mockSearchTvSeriess = MockSearchTvSeriess();
   mockSearchMovies = MockSearchMovies();
   searchTvSeriesBloc = SearchTvSeriesBloc(mockSearchTvSeriess);
   searchMovieBloc = SearchMovieBloc(mockSearchMovies);
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM