31
loading...
This website collects cookies to deliver better user experience
Extension methods, introduced in Dart 2.7, are a way to add functionality to existing libraries. (Link)
extension ExtendedDateTime on DateTime {
static DateTime? _customTime;
static DateTime get current {
return _customTime ?? DateTime.now();
}
static set customTime(DateTime customTime) {
_customTime = customTime;
}
}
class User {
final String userName;
final DateTime createdDate;
User(this.userName, this.createdDate);
static User createUser(String userName) => User(userName, DateTime.now());
}
final result = User.createUser('Reme');
expect(result, equals(User('Reme', DateTime.now());
class User {
final String userName;
final DateTime createdDate;
User(this.userName, this.createdDate);
static User createUser(String userName) => User(userName, ExtendedDateTime.current);
}
ExtendedDateTime.current = DateTime.parse(
"2020-05-15 13:07:53.531Z",
);
final result = User.createUser('Reme');
expect(result, equals(User('Reme', "2020-05-15 13:07:53.531Z");
Working code != testable code, but testable code == working code.