Created
May 30, 2023 22:51
-
-
Save ulisseshen/1933556ec2ea68d3a5fc4a137daf0286 to your computer and use it in GitHub Desktop.
Spy - Um spy é um test double usado para inspecionar a saída produzida pelo sistema em teste.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Interface do LayoutManager | |
abstract class LayoutManager { | |
void paintDarkMode(); | |
void paintLightMode(); | |
} | |
// Implementação Dummy do LayoutManager | |
class LayoutManagerDummy implements LayoutManager { | |
@override | |
void paintDarkMode() { | |
// Não faz nada | |
} | |
@override | |
void paintLightMode() { | |
// Não faz nada | |
} | |
} | |
abstract class SettingsStorage { | |
void setDarkModeEnabled(bool enabled); | |
} | |
class SettingsController { | |
final LayoutManager layoutManager; | |
final SettingsStorage settingsStorage; | |
SettingsController({ | |
required this.layoutManager, | |
required this.settingsStorage, | |
}); | |
void setDarkModeEnabled(bool enabled) { | |
if (enabled) { | |
layoutManager.paintDarkMode(); | |
} else { | |
layoutManager.paintLightMode(); | |
} | |
settingsStorage.setDarkModeEnabled(enabled); | |
} | |
} | |
class SettingsStorageSpy implements SettingsStorage { | |
bool? darkModeEnabled; | |
@override | |
void setDarkModeEnabled(bool enabled) { | |
darkModeEnabled = enabled; | |
} | |
} | |
void main() { | |
final layoutManager = LayoutManagerDummy(); | |
final settingsStorageSpy = SettingsStorageSpy(); | |
final settingsController = SettingsController( | |
layoutManager: layoutManager, | |
settingsStorage: settingsStorageSpy, | |
); | |
settingsController.setDarkModeEnabled(true); | |
print(settingsStorageSpy.darkModeEnabled); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment