15 czerwca 2013

Męk intelektualnych kontynuacja - taskassin na GitHubie dzień 2

Wczorajszych, piątkowych męk intelektualnych związanych z tworzeniem aplikacji taskassin w Scali nie mniej i dzisiaj, w sobotę. Mimo braku czasu na specjalnie długie zastanawianie się, co i jak należałoby zrobić, aby poprawić moją sytuację, usprawniłem TaskListTest, w którym próbuję się odnaleźć i przekuwam idee w kod.

Dzisiaj postanowiłem zanurzyć się w dokumentacji ScalaTest, aby nie skończyć z przekopiowaniem części kodu testu. W ten sposób znalazłem metodę pending, która (jak możnaby wywnioskować z jej nazwy) w ciele metody testującej pozwala na opóźnienie momentu, w którym test faktycznie powstanie. Innymi słowy, wiesz, że taki test musi powstać, ale nie bardzo wiesz, jak należałoby go napisać (aka zaimplementować). Sprytne.

W ten sposób powstał test jak poniżej.
describe("List of three tasks (with 5 minutes in between)") {
  it("should return the tasks for today") (pending)
}
Wykonanie takiego testu przechodzi poprawnie, ale oznaczone jest żółtym kolorem.

To lubię!

Skorzystałem również z potrójnej równości, która przy niepomyślnym porównaniu wyświetla różnice w bardziej zrozumiałej postaci, z dokładną informacją o różnicy.

Ostatnią zmianą było użycie before z traitu org.scalatest.BeforeAndAfter.
before {
  val t2 = new Task("t2", DateTime.now + 2.minutes)

  /* http://mkaz.com/solog/how-to-sort-collections-in-scala */
  /* sort by due date */
  def compByDueDate(t1: Task, t2: Task) = t1.due < t2.due

  ts = List(t2, t1) sortWith compByDueDate
}
Krótka lektura Getting started with FunSpec, która zajęła mi bagatela 10 minut, a wiedzy i zmian ogrom (na długie godziny). Niestety kodu produkcyjnego wciąż mało. Zmiany są dostępne w projekcie taskassin na GitHubie.