В моем приложении Flutter есть класс репозиторий со следующим методом, который возвращает поток:
Stream<List<Product>> getProducts() async* {
var currentUser = await this._auth.currentUser();
if (currentUser == null) {
throw AuthException('not_logged_in',
'No current user found probably because user is not logged in.');
}
yield* ...
}
Согласно этому ответу на SO, Приведенный выше способ генерации исключения из асинхронной c функции генератора выглядит нормально.
Как мне написать свой тест (с пакетом test ), чтобы проверить исключение, генерируемое этим методом?
Как-то так не работает :
test('should throw exception when user is not logged in', () {
final _authSignedOut = MockFirebaseAuth(signedIn: false);
final _repoWihoutUser = FirebaseProductRepository(
storeInstance: _store,
authInstance: _authSignedOut,
);
var products = _repoWihoutUser.getProducts();
expect(products, emitsError(AuthException));
});
И не это:
expect(callback, emitsError(throwsA(predicate((e) => e is AuthException))));
Даже не это:
var callback = () {
_repoWihoutUser.getProducts();
};
expect(callback, emitsError(throwsA(predicate((e) => e is AuthException))));