bizz84 / time_tracker_flutter_course

Source code for every lesson in the "Flutter & Firebase: Build a Complete App for iOS & Android" course on Udemy
https://nnbd.me/ff-udemy
MIT License
405 stars 171 forks source link

Migrate project to Null Safety #7

Open bizz84 opened 3 years ago

fogelfish commented 3 years ago

Andrea, it has been incredibly helpful to have this non-trivial example of migrating to Null Safety to learn from. I really appreciate your doing this for the time_tracker course. I have questions about how dart analysis evaluates some code in email_form_sign_in_stateful_test.dart. For example, in this method...

  void stubSignInWithEmailAndPasswordSucceeds() {
    when(mockAuth.signInWithEmailAndPassword(any!, any!))
        .thenAnswer((_) => Future<User>.value(MockUser()));
  }

...this code is marked as dead code:

any!))
        .thenAnswer((_) => Future<User>.value(MockUser()));

And both any! arguments give this result in the analysis:

info: This null-check will always throw an exception because the expression will always evaluate to 'null'. (null_check_always_fails at [time_tracker] test/email_form_sign_in_stateful_test.dart:37)

Are these results unavoidable at this time?

bizz84 commented 3 years ago

@fogelfish some of the code in the test files is not finalized yet. As I pointed out in this article, there are some problems with mockito and null-safety. You'll notice that some tests have skip: true.

So yeah, don't use my test code as reference as this is not ready just yet.

pawelpetruch commented 3 years ago

@bizz84 maybe use mocktail? It's way more comprehensive when migrating to null safety.