[英]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.