Ich habe eine C-Funktion uint8_t command_read(const FILE* const in)
, die von in
liest. Ich würde gerne einen Unit-Test für die Funktion schreiben. Ist es möglich, ein FILE*
im Speicher für den Test zu erstellen, da ich den Dateisystemzugriff vermeiden möchte? Wenn nicht, was sind die Alternativen?
Antwort
Zu viele Anzeigen?Ist es möglich, eine FILE* im Speicher für den Test zu erstellen?
Sicher. Zum Schreiben:
char *buf;
size_t sz;
FILE *f = open_memstream(&buf, &sz);
// Arbeitsablauf mit 'f'
fclose(f);
// hier können Sie auf den Inhalt von 'f' mit 'buf' und 'sz' zugreifen
free(buf); // wenn fertig
Dies ist POSIX. Dokumente.
Zum Lesen:
char buf[] = "Hallo Welt! Dies ist keine Datei, sie gibt nur vor, eine zu sein.";
FILE *f = fmemopen(buf, sizeof(buf), "r");
// von 'f' lesen, dann
fclose(f);
Anmerkung:
Ich würde gerne vermeiden, dass der Test mit dem Dateisystem interagieren muss.
Warum?