簡體   English   中英

Flutter 帶有延遲初始化變量的 Bloc 測試錯誤?

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

在我使用 bloc 測試運行測試后,我遇到了延遲錯誤,如果我用 nullsafety 更改延遲,它們也將返回錯誤,那么有什么替代方法可以解決? 當我嘗試不使用 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));
      },
    );

問題的圖片

我認為您在依賴項之前在設置中初始化 bloc 的問題。 順序在這里很重要。 也許你應該這樣做:

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