Mi piacerebbe scrivere un test unitario per un metodo che stampa sullo standard output. Ho già modificato il codice in modo che venga stampato su un'istanza passata File
invece che sia stdout
per impostazione predefinita. L'unica cosa che mi manca è l'istanza in memoria File
che potrei passare. C'è una cosa del genere? Qualche raccomandazione? Vorrei qualcosa di simile ha funzionato:File in memoria per l'unittest
import std.stdio;
void greet(File f = stdout) {
f.writeln("hello!");
}
unittest {
greet(inmemory);
assert(inmemory.content == "hello!\n")
}
void main() {
greet();
}
Qualsiasi altro approccio per il codice di unit test che stampa a stdout
?
Questo bisogno di essere cross-platform? –
No; Per esempio. la nuova linea su varie piattaforme potrebbe essere diversa. Non voglio testare questo aspetto, ma solo il contenuto stampabile. Quindi, invece di 'File' avrei bisogno di qualcosa come' OutputStreamWriter' in Java, cioè rimango nel livello di caratteri unicode piuttosto che in encoding, filesystem, ecc. Sarebbe bello se il mio test fosse eseguito su tutte le piattaforme ovviamente ... – Tamas