21. /29@yegor256 21
interface User {
Profile profile();
Account account();
class Fake {
Fake(String name, int balance) {
// ...
}
// ...
}
}
22. /29@yegor256 22
@Test
void printsReport() {
User user = new User.Fake(“Jeffrey”, 123);
assertThat(
Foo.report(user),
containsString(“Balance of Jeffrey is 123 USD”)
);
}
verbosity?
23. /29@yegor256 23
@Test
void reportIncludesUserName() {
User user = new User.Fake(“Jeffrey”);
assertThat(
Foo.report(user),
containsString(“Jeffrey”)
);
}
code duplication?
@Test
void reportIncludesBalanceInUSD() {
User user = new User.Fake(123);
assertThat(
Foo.report(user),
containsString(“123 USD”)
);
}
24. /29@yegor256 24
@Test
void reportIncludesUserName() {
User user = new User.Fake(“Jeffrey”);
assertThat(
Foo.report(user),
containsString(“Jeffrey”)
);
}
complexity?
@Test
void reportIncludesBalanceInUSD() {
User user = new User.Fake(123);
assertThat(
Foo.report(user),
containsString(“123 USD”)
);
}
25. /29@yegor256 25
String report(User user) {
return String.format(
“Balance of %s is %d USD”,
user.profile().name(),
user.account().balance().usd()
);
}
fragility?
@Test
void reportIncludesBalanceInUSD() {
User user = new User.Fake(123);
assertThat(
Foo.report(user),
containsString(“123 USD”)
);
}