felangel / felangel/mocktail

Should when() calls have a better error message for not having a following thenAnswer/thenReturn call?

Abierto
#213 1 comentario 7 reacciones 0 asignados Ver en GitHub
enhancement
Lenguaje dominante
Dart
Estrellas
702
Forks
88
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

**Describe the bug**
I ran into an extremely hard to diagnose bug. I wrote some tests and found that they were randomly failing with

````
Bad state: Cannot call `when` within a stub response
````
It was random because depending on if I randomized my tests sometimes the tests would pass or fail.

The reason for this was that on a prior test we had called `when(() => someFunction())` but since the the function returns `Future` I was under the assumption that the return value was unimportant and could be ignored. However, this meant that any subsequent `when` calls errored out, as `_whenCall` (inside `mocktail.dart`) was no longer `null`.

**To Reproduce**
1) Write any `when` call without a `thenAnswer/thenReturn` for a `void`/`Future` function.
2) Write another `when` call for the same mocked class.

**Expected behavior**
Not actually sure. Should `void`/`Future` be allowed by default without a `then`? This doesn't feel quite right. Or should there be a better error message like `Missing then function for when`, or just a hint on the current error message about making sure that your whens have following thens. I could also just be mistaken and there's a good reason for `when()` calls without a following `then`.

**Logs**
````
Bad state: Cannot call `when` within a stub response
package:mocktail/src/mocktail.dart 206:5 when
test/features/notifications/cubits/notification_preferences_cubit_test.dart 303:11 main...
package:bloc_test/src/bloc_test.dart 203:25 testBloc.
===== asynchronous gap ===========================
dart:async _Completer.completeError
package:bloc_test/src/bloc_test.dart 257:43 _runZonedGuarded.
===== asynchronous gap ===========================
dart:async _CustomZone.registerBinaryCallback
package:bloc_test/src/bloc_test.dart 254:5 _runZonedGuarded.
dart:async runZonedGuarded
package:bloc_test/src/bloc_test.dart 253:3 _runZonedGuarded
package:bloc_test/src/bloc_test.dart 200:11 testBloc
package:bloc_test/src/bloc_test.dart 156:13 blocTest.
````

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.