Wpis z mikrobloga

#programowanie #nodejs

Napisałem testy jednostkowe skryptu wykonującego pewne operacje na plikach tekstowych. Przed wykonaniem testów, w bloku before(), usuwam zawartość folderu na którym przeprowadzam testy, następnie kopiuję z innego folderu (o nazwie resources) tzw. pliki startowe. Chcę po prostu żeby przed rozpoczęciem testów, folder testowy miał zawsze jakąśtam (zawsze taką samą) zawartość. Do kopowania plików z resources do folderu testowego używam biblioteki ncp. Zaraz po bloku before() rozpoczynają się testy, tj. pobieram zawartość skopiowanych plików i cośtam z nimi potem robię. Testy rozpoczynam oczywiście dopiero jak ncp wywoła callback (czyli na 100% zakończy kopiowanie folderu).

Problem w tym, że testy raz przechodzą a raz nie xD Zauważyłem że jest to spowodowane tym, że fs.readFileSync(fileOriginalFullPath); czasem zwraca poprawną zawartość plików, czasem zwraca nic, nie rzucając żadnym błędem. Pytanie czym może być to spowodowane. Czy to możliwe że mimo zakończenia procesu kopiowania, pliki te nadal są w jakiś sposób przetwarzane? I przez to nie zwracają wartości?
  • 5
@piotrek-5: Nie lepiej byłoby tworzyć jakiś folder tymczasowy za każdym razem zamiast bawić się w usuwanie zawartości z już istniejącego? Usuwanie plików wydaje mi się dość ryzykowne, bo zawsze jakiś może być zablokowany przez inny proces i nie będzie możliwości usunięcia.
@piotrek-5: No właśnie nie jest tymczasowy, bo zawsze używasz tego samego folderu. Jak musiałem testować na plikach to zawsze wykorzystywałem taki schemat:

setUp: Tworzysz folder i kopiujesz pakiet startowy
Testy
tearDown: Usunięcie folderu z zawartością

W takim schemacie, nawet jeśli coś się nie usunie, nie będzie miało wpływu na kolejne testy.