Brudnopis programisty czyli zapiski o programowaniu

TimeZone.getDefault() - dwa słowa o niespodziankach

Ostatnio przygotowywałem pull requesta dla biblioteki typesafe/config - prosty ficzer. Okazało się, że po moich zmianach build na windowsach przestał przechodzić. Po czasochłonnej inwestygacji, debugowaniu i namierzaniu problemu, okazało się, że winowajcą jest tytułowy TimeZone.getDefault(). Gdy to odkryłem, uświadomiłem sobie dlaczego tak bardz... Read more

Przetrwać chaos - ChaosJournal w Akka Persistence

Przeglądając kod źródłowy akka-persistence, natknąłem się na bardzo ciekawy sposób testowania odporności na błędy persystencji. W tym teście użyty jest ChaosJournal - implementacja journala losowo rzucająca wyjątkami przy odczycie lub zapisie danych. “Właśnie tego szukałem!” - pomyślałem i zacząłem się bawić nową zabawką. Nie bez przyczyny zacz... Read more

Side effecty, a Mock

Jakiś czas temu rozpisywałem się o mockach. Teraz pora na krótką opowiastkę o tym samym, ale z innej perspektywy. Przez ostatni rok piszę w scali, nie napisałem w niej ani jednego mocka (nie licząc TestProbe z Akki). Niedawno też wróciłem popisać sobie w javie, praktycznie od razu gdy miałem zamiar pisać test jednostkowy, chciałem użyć mocka. D... Read more

Bądź leniwy, a nie chciwy - słów kilka o leniwej ewaluacji

Ostatnio można było odnieść wrażenie, że tak jak tytuł mówi, jestem leniwy (ostatni wpis na początku roku), ale nic bardziej mylnego. Już zabieram się za temat leniwej ewaluacji. Wyjdę od Scali, a później przejdę do PHP. Leniwa ewaluacja na przykładzie Scali Są dwa sposoby ewaluacji wyrażeń: chciwe (strict) oraz leniwe (lazy). Scala jest język... Read more

Nie Mockuj tak! Czyli o (nad)używaniu Mocków w testach...

Na wstępie: fajnie by było, abyś wiedział mniej więcej co to jest Mock, Stub i Fake - nie będę tego jakoś szczególnie objaśniał bo idea tego wpisu jest inna niż wstęp do “zaślepek”. Tutaj możesz poczytać o różnych zaślepkach na przykładzie PHPUnit. Spis treści, a jak! Wstępniak Kiedy Mock? Przykład zaślepiania metody typu Quer... Read more